前面一直用的xlwings做演示,但其实这个库的缺陷还是比较大的,一般只能在windows系统和mac系统中使用,虽然pro版本功能在不断拓展,但是目前还不能很好的支持WEB。所以这里通过对照xlwings的功能介绍openpyxl库。
基本流程
类似于介绍xlwings那样,我列出了openpyxl的基本启动流程:
导入库-》创建工作簿-》取得工作表-》保存-》关闭工作簿
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
wb.save('123.xlsx')
wb.close()
对照xlwings的流程,这里少了app的创建和退出步骤,对于openpyxl来讲,系统里有没有excel他是不关心的,而且最后的关闭是可有可无的,程序退出自然就关掉了。
打开已有工作簿
Xlwings使用app.books.open打开已有工作簿。
wb_template = app.books.open('小学生信息表.xlsx')
Openpyxl使用load_workbook打开
wb_new = load_workbook('data.xlsx')
增加与获取工作表
Xlwing使用ws = wb.sheets.add()来增加表格,使用after与before参数控制位置。
Openpyxl使用wb.create_sheet('213',0)来表示在0号表之前增加一个213表。
两者在创建表确定位置时,一个是用表名为索引,一个以位置为索引。
在获取表格时,都可以用名称作为索引,但openpyxl不能用数字位置获取表格。
修改表名
Xlwings使用ws.name =’xxx’ 来修改表名。
Openpyxl使用ws.title = ‘xxx’ 修改
删除表格
Xlwings使用ws.delete()删除表格
openpyxl使用wb.remove_sheet(ws) 来删除表。
复制表
xlwings使用如下方式将ws1拷贝到wb2的活动表后面。
ws1.copy(name= '1234' , after=wb2.sheets.active)
openpyxl中使用copy_worksheet方法来实现
ws2 = wb.copy_worksheet(ws)
根据源码,这个操作只能在一个表只能进行,会在被复制的表后面加一个以copy结尾的新表
单元格的访问
相似的,在对单元格访问时,两者都可以通过ws[‘A1’]的形式访问单元格
此外openpyxl可以使用ws.cell(row=1,column=1)来进行访问A1单元格,xlwings则是range((1,1))。
范围访问
xlwings使用range((1,1),(2,2))以及ws[‘A1:B2’]这两种形式来划定单元格范围。
openpyxl使用ws['A1':'B2'] 来划定范围,注意冒号的位置
赋值
Xlwings可以给一个单元格赋二维数组的值,形成多行
Openpyxl目前没有这种多行赋值的,但可以使用ws.append()方法,写入一行数据