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等等。以后有用到再去啃吧……。

xlwings简介

上一篇:Win32 处理多个按钮共用一个事件消息


下一篇:WPF根据窗口内容自动调整窗口大小