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
app = xw.App(visible=True, add_book=False)
:打开一个excel程序。add_book如为True,则打开的excel会默认生成一个新建的bookwb1 = app.books.open(filename)
、wb2 =xw.Book(filename)
:打开一个book。这2种方法都是打开一个book,前者是在一个app中打开,而后者是每打开一个book,都会打开一个appwb1.quit()
:退出,但不会保存
4. book
wb.sheets
:获得一个book中的所有的sheet的集合wb.sheets(sheetname)
、wb.sheets[index]
:打开一个sheet,前者用sheetname,后者用索引new_wb = wb1.sheets.add(name='newshtname', after='sheet1')
:在sheet1后面新建一张名为newshtname的sheet,并返回给new_wbwb.save()
:保存wb.close()
:关闭
5. sheet
sheet.autofit(axis=None)
:自适应。axis=r(c)则对行(列)做自适应,无参数则对整个sheetcopyed = sht.copy(name='abc', after=sht)
:将sht管理的sheet复制成名为abc的sheet,放在sht的后面,并返回给copyed对象sht.range(r, c)
:返回一个r行c列的单元格。这里的行列的起始索引都是1,这点要注意
6. range
range(r, c)
、range((r1, c1), (r2, c2))
、range('A3')
、range('A1:B5')
:这些都返回sheet里的一片区域range.clear()
、range.clear_contents()
: 前者清除区域的内容和格式,后者仅清除区域内的内容range.color()
:获取区域内的颜色old_range.copy(new_range)
:将old_range中的内容复制到new_range中。new_range可以是其第一个单元格range.expand(mode='table')
:扩展当前range的范围。mode默认为table
,但可以取down
,right
,table指的是在行列方向上的扩展,而down/right是行或列的扩展。而且它的扩展是有前提条件的:如果在扩展方向上有空白单元格,则停止扩展range.offset(rowoffset, coloffset)
:返回一个从指定单元格为起始点的区域对象options(convert=None, **options)
:允许用户设定转换器和相关的选项。转换器定义了Excel的区域及其值在读写过程中如何转换。如果没有明确指定转换器,会使用基转换器(base converter)
这个options很强大,主要是进行一些转换。我目前只用了ndim
,它表示维数。eg.range.options(ndim=2)
可以将一个一维列表转换成二维,详见文档range.resize(row_size=None, column_size=None)
:调整当前range的范围,和expand
不一样。调整后范围为以range的左上角为起点为,高为row_size,宽为column_size的一片区域
结语:之所以会用到xlwings,是因为最近在公司每天都要登记台账,每天都会花费很长的时间,而且都是机械、重复的动作,所以就写了个小脚本。以上是我用到的东西,xlwings中还有很多api我没用到,如Chart/Picture等等。以后有用到再去啃吧……。
/*
对生活保持热情与好奇,尽情享受每一天……
*/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理