随笔 - 16  文章 - 0  评论 - 0  阅读 - 5433

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

posted on   rogerg6  阅读(1084)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示