Python 使用xlwings库操作excel的简明实践分享之表格操作
增加表格
简易的增加
ws = wb.sheets.add() ws = wb.sheets.add() ws = wb.sheets.add()
add函数中不增加任何参数,则默认是在当前活动表的前面增加一张表,加上原有的一张表,则文件中会是这样的顺序
指定位置增加
其中还可以增加after和before的参数,来指定新表的位置
指定的表必须要存在。
前序文章提及过创建表时会把创建的表设为活动表,所以不带位置参数创建的新表会加到活动表的前面,而并非是永远在最前面的。
当提供名称参数时,创建的表就带有这个名称。
设活动表
使用表格的activate方法使自身成为这个工作簿的活动表
wb1 = app.books.add()
ws1 = wb1.sheets.add() ws2 = wb1.sheets.add() ws3 = wb1.sheets.add() ws4 = wb1.sheets.add() ws5 = wb1.sheets.add()
ws3.activate()
删除表
使用表的delete函数来删除自身
ws5.delete()
可以看到表被删除了,活动表又回到了上一个活动的表上。
获取所有表名
wb.sheets代表这个工作簿里所有的表格对象,sheet.name 代表一张表的表名,可以使用列表生成式来提取表的名称列表。
name_list = [sheet.name for sheet in wb.sheets]
也可以通过工作簿的的sheet_names属性获得
print(wb2.sheet_names)
这会是按照表里面的顺序获得的
通过表名和索引获取表
通过表名取得表就相当于字典取得键的值一样
通过索引取得表就相当于列表取得值一样
表格的复制
同工作簿拷贝表格
wb1 = app.books.add()
ws1 = wb1.sheets.active ws1.copy()
不具名拷贝会出现一个带数字的重命名表格,和人工拖拽是一样的。会出现在所有表格后面
带上名称拷贝可以在拷贝后重命名,这个名字也不能重复,不会再帮你重命名了。
ws1.copy(name= '1234' )
从这个工作簿拷贝表格到其他工作簿里
工作表列表sheets可以通过查看源码,发现其实现了迭代器__iter__,也可以通过索引获取表格,但本身并不是个列表,单纯通过列表append是不行的。还是得看copy方法。其可以带after和before两种参数,参数类型是表格对象,根据表格对象自己所在的工作簿确定这个被复制的表要去哪里。
wb1 = app.books.add()
ws1 = wb1.sheets.active cell_A1 = ws1.range( 'A1' ) cell_A1.value = [212, 232, 2332]
wb2 = app.books.add() ws1.copy(name= '1234' , after=wb2.sheets.active)
可以看到工作簿1的表格被拷贝到了工作簿2,并重命名为1234
转载自:https://juejin.cn/post/7223775785206824997