用对照法对比xlwings,了解openpyxl的基本用法

786 阅读2分钟

前面一直用的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他是不关心的,而且最后的关闭是可有可无的,程序退出自然就关掉了。

image.png

打开已有工作簿

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结尾的新表

image.png

 

单元格的访问

相似的,在对单元格访问时,两者都可以通过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()方法,写入一行数据