1、xlwings模块介绍:
xlwings的意思是给Excel插上翅膀,官网解释为Make Excel Fly。
xlwings是一个可以实现从Excel调用Python,也可在python中调用Excel的库。开源免费,一直在更新。特点:
1)xlwings支持.xls读,支持.xlsx文件读写。
2)支持Excel操作。
3)支持VBA。
xlwings支持操作xlsx和xls类型文件;
官方文档地址:https://docs.xlwings.org/en/stable/index.html
2、xlwings库的安装与更新
xlwings的安装或更新比较简单,Ctrl+右键选择打开命令框,
输入命令 pip install xlwings即可安装,默认安装的是最新版本,如果需要指定版本,则需要在安装时输入pip install xlwings==版本号;
升级xlwings版本,需要执行命令 pip install --upgrade xlwings
验证是否安装成功:
打开命令行窗口,输入python回车,然后输入import xlwings,如果为提示错误,则表示安装成功;使用xlwings.__VERSION__可以查看目前按照版本;
3、xlwings的基本使用:
### 在xlwings中:
Excel程序用App来表示,多个Excel程序集合用Apps表示;
App就是我们打开的一个Excel应用,在此实例下创建工作薄。因此我们要创建工作簿,就必须先创建App实例。一个App实例可以创建多个工作簿Book。
单个工作簿用Book表示,工作簿集合用Books表示;
单个工作表用Sheet表示,工作表集合用Sheets表示;
区域用Range表示,既可以是一个单元格,也可以是一片单元格区域。
### 读取Excel文件的操作;
读取需要先实例化一个App对象,执行以下语句:
app = xw.App(visible=True, add_book=False); 实例化一个app并设置可见
app.display_alerts=False 设置不显示警告
wb = app.books.open('H://test.xlsx') 传入Excel文件路径打开文件;
获取第一个sheet表,执行语句:sht = wb.sheets[0]
获取sheet表中单元格数据的方式如下:
print(sht.range('A1').value) 读取单个
print(sht.range((1, 1), (5, 5)).expand().value) # 批量读取
print(sht.range(1, 1).expand('right').value) # 按行读
print(sht.range(1, 1).expand('down').value) # 按列读
### 写文件操作:
最简单的写文件操作步骤:
使用xlwings.App()打开Excel
使用app.books.add()添加一个工作簿
使用book.sheets.add()添加一个工作表
使用sheet.range('A1').value="A"给指定的单元格赋值
使用book.save('文件路径.xlsx')保存文件;
def writeExcel():
#使用with打开excel,可以不关心关闭的问题,参数标识操作可见
with xw.App(visible=True,add_book=False) as app:
book = app.books.add() #创建一个工作簿
sheet = book.sheets.add() #创建sheet表
sheet.range('A1').value = '直接写入单元格数据'
book.save('H://xlwings.xlsx') #保存文件
#writeExcel()
def writeExcle2():
book = xw.Book()
sheet = book.sheets[0]
sheet.range('A1').value = '直接写'
book.save('H://xlwings.xlsx') #保存文件
book.close()
#writeExcle2()
除了单独写入一个单元格,还可以传入列表写入一行或一列数据;
def writeExcel3():
''''''
wb = xw.Book()
sht = wb.sheets[0]
info_list = [['110202111111234','商品1',5],
['110202111118891','商品2','16'],
['110202111111004','商品3','20'],]
# 写入表头
titles = [['商品编号','商品名称','数量']]
sht.range('a1').value = titles
# 写入数据
sht.range('a2').value = info_list
# 保存数据
wb.save('H://xlwings.xlsx')
sht.range('a1').value=['商品编号1','商品名称2','数量3'] #修改
wb.save()
xlwings的app激活;
每次使用xlwings打开一个新的Excel,都会生成一个app的编号,用于后续区分是哪一个app,用来识别不同的Excel程序;
def getApp():
''''''
app=xw.App()
pid = app.pid
# 就是这个App的PID
app1=xw.App()
pid1 = app1.pid
print(pid,pid1)
#wps没有这些
#apps = xw.apps
#print(apps.count) #查看app数量
#keys = apps.keys()
#print(keys) #查看app的pid值
#app.activate() #激活当前app
后续可以通过app.active激活指定的Excel文件进行处理;