使用Python的库xlwings操作EXCEL
使用Python的库(也称为模块)xlwings可以说是处理Excel数据的利器。Xlwings是开源免费的,能够非常方便的读写Excel文件中的数据,并且能够修改单元格的格式。
xlwings文档 https://docs.xlwings.org/en/stable/
xlwings中文文档 https://www.kancloud.cn/gnefnuy/xlwings-docs/1127450
要使用xlwings,需要安装xlwings。可以cmd中使用下面命令安装:
pip install xlwings
【详见 Python第三方模块(库、包)安装、卸载与查看及常见问题解决 https://blog.csdn.net/cnds123/article/details/104393385 】
测试安装是否成功,在IDLE shell中输入:
import xlwings as xw
参见下图:
若不报错,说明安装xlwings成功。
若报错提示No module named ‘pywintypes’
先关闭IDLE shell,在cmd中执行:pip install pypiwin32
再次启动IDLE shell输入import xlwings as xw测试
将xlwings库安装成功后,若想在python代码中使用它,首先导入语句导入xlwings库:
import xlwings
或
import xlwings as xw
【python之import语句语法
格式一:
import 模块名 [as 别名]
说明:1)将整个模块导入。2)[as 别名]部分可无,取别名简化引用。 3)使用导入模块中的成员的格式:模块名[或别名]. 成员
成员包括属性(变量)或函数。
格式二:
from 模块名 import 成员名或*
说明:1)导入模块中的某个成员,*代表所有成员。
若导入包中模块,将上面语法中的模块名改为 包名.模块名
】
xlwings基本对象层次,参见下图:
新建应用(或叫打开Excel程序,一个应用xlwings的程序): app = xw.App(visible=True, add_book=False)
添加工作簿(book、workbook):excel文件(excel程序):wb = app.books.add()
保存工作簿:wb.save(f'D:\\example\\FileName.xlsx')
引用工作簿
工作簿应该首先被打开后,才以用如下语句引用工作簿:
wb.=xw.books['工作簿的名字‘]
对于活动工作簿,用如下语句引用
wb=xw.books.active
引用工作簿中的工作表(sheet):
sht=xw.books['工作簿的名字‘].sheets['sheet的名字']
或
wb=xw.books['工作簿的名字']
sht=wb.sheets[sheet的名字]
引用单元格:
假设引用A1单元格
rng=xw.books['工作簿的名字‘].sheets['sheet的名字']
或
sht=xw.books['工作簿的名字‘].sheets['sheet的名字']
rng=sht.range('A1')
特别提示:引用工作表(sheet)上的单元格方式比较灵活多样,先介绍这些,以后还将介绍。
关闭工作簿: wb.close()
关闭应用(Excel程序):app.quit()
例1、在目录“D:\example\练习01”(若此目录不存在请先建立之)中,新建名为test.xlsx工作薄,在sheet1表的A1单元格输入 “ABC123” ,然后保存关闭,退出Excel程序。代码如下:
import xlwings as xw #导入xlwings
app=xw.App(visible=True,add_book=False) #新建应用(或叫打开Excel程序)
wb=app.books.add() # 新建的工作簿wb,下一行对wb的sheet1的A1单元格赋值
wb.sheets['sheet1'].range('A1').value='ABC123'
wb.save(f'D:\\example\\练习01\\testA.xlsx') #保存工作簿
wb.close()
app.quit()
从上面例子可以了解,用xlwings库 读写excel大体步骤:
先导入xlwings,之后
应用->工作簿->工作表->读写范围(range)->关闭工作簿->关闭应用
例2、打开已保存的testA.xlsx,在sheet1表的A2单元格输入“呵呵”,然后保存关闭,退出Excel程序。代码如下:
import xlwings as xw #导入xlwings
app=xw.App(visible=True,add_book=False) #新建应用(或叫打开Excel程序)
wb=app.books.open(f'D:\\example\\练习01\\testA.xlsx') # 打开工作簿(workbook)
wb.sheets['sheet1'].range('A2').value='呵呵' #对工作簿的sheet1的A1单元格赋值
wb.save()
wb.close()
app.quit()
例3、、打开已保存的testA.xlsx,在sheet1表的插入如下图所示的值,然后保存关闭,退出Excel程序。代码如下:
import xlwings as xw #导入xlwings
app=xw.App(visible=True,add_book=False) #新建应用(或叫打开Excel程序)
wb=app.books.open(f'D:\\example\\练习01\\testA.xlsx') # 打开工作簿(workbook)
sht = wb.sheets['sheet1'] # 页sheet1
# 同时插入行列
sht.range('a6').expand('table').value = [['a','b','c'],['d','e','f'],['g','h','i']]
# 在当前目录下生成文件
wb.save(f'D:\\example\\练习01\\testA.xlsx')
wb.close()
app.quit()
进一步学习,参见:
https://blog.csdn.net/lly1122334/article/details/99706504