xlwings簡介


xlwings簡介

NOTE:以下僅僅是簡介,我針對自己用到的api進行了總結,詳見官方文檔https://docs.xlwings.org/zh_CN/latest/api.html#books

1. 簡介

目前,市面上能操作excel的第三方python庫有很多,例如:xlrd/xlwt/xlutils、openpyxl等等。但是,這幾個庫都用起來不是很舒服。xlrd/xlwt在讀寫方面速度不是很快,而openpyxl不能操作*.xls文件。所以這次我試用了一下xlwings,感覺不錯,xlsx/xls文件都能讀寫,速度也還可以。

2. 對象層次

xlwings.apps.books.sheets.range

apps: 當前打開的多個excel應用

books: 單個excel應用中打開的多個xls/xlsx文件

sheets: 單個book中的多個sheets

range: 單個sheet中的范圍。eg. range(1, 1)/range('A1')代表第一個單元格

3. app

  1. app = xw.App(visible=True, add_book=False):打開一個excel程序。add_book如為True,則打開的excel會默認生成一個新建的book
  2. wb1 = app.books.open(filename)wb2 =xw.Book(filename):打開一個book。這2種方法都是打開一個book,前者是在一個app中打開,而后者是每打開一個book,都會打開一個app
  3. wb1.quit():退出,但不會保存

4. book

  1. wb.sheets:獲得一個book中的所有的sheet的集合
  2. wb.sheets(sheetname)wb.sheets[index]:打開一個sheet,前者用sheetname,后者用索引
  3. new_wb = wb1.sheets.add(name='newshtname', after='sheet1'):在sheet1后面新建一張名為newshtname的sheet,並返回給new_wb
  4. wb.save():保存
  5. wb.close():關閉

5. sheet

  1. sheet.autofit(axis=None):自適應。axis=r(c)則對行(列)做自適應,無參數則對整個sheet
  2. copyed = sht.copy(name='abc', after=sht):將sht管理的sheet復制成名為abc的sheet,放在sht的后面,並返回給copyed對象
  3. sht.range(r, c):返回一個r行c列的單元格。這里的行列的起始索引都是1,這點要注意

6. range

  1. range(r, c)range((r1, c1), (r2, c2))range('A3')range('A1:B5'):這些都返回sheet里的一片區域
  2. range.clear() range.clear_contents(): 前者清除區域的內容和格式,后者僅清除區域內的內容
  3. range.color():獲取區域內的顏色
  4. old_range.copy(new_range):將old_range中的內容復制到new_range中。new_range可以是其第一個單元格
  5. range.expand(mode='table'):擴展當前range的范圍。mode默認為table,但可以取down, right,table指的是在行列方向上的擴展,而down/right是行或列的擴展。而且它的擴展是有前提條件的:如果在擴展方向上有空白單元格,則停止擴展
  6. range.offset(rowoffset, coloffset):返回一個從指定單元格為起始點的區域對象
  7. options(convert=None, **options):允許用戶設定轉換器和相關的選項。轉換器定義了Excel的區域及其值在讀寫過程中如何轉換。如果沒有明確指定轉換器,會使用基轉換器(base converter)
    這個options很強大,主要是進行一些轉換。我目前只用了ndim,它表示維數。eg. range.options(ndim=2)可以將一個一維列表轉換成二維,詳見文檔
  8. range.resize(row_size=None, column_size=None):調整當前range的范圍,和expand不一樣。調整后范圍為以range的左上角為起點為,高為row_size,寬為column_size的一片區域

結語:之所以會用到xlwings,是因為最近在公司每天都要登記台賬,每天都會花費很長的時間,而且都是機械、重復的動作,所以就寫了個小腳本。以上是我用到的東西,xlwings中還有很多api我沒用到,如Chart/Picture等等。以后有用到再去啃吧……。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM