Python辅助Word+Excel:让办公更高效
上QQ阅读APP看书,第一时间看更新

023 使用列表操作符拼接两个工作表

此案例主要通过使用Python语言的列表脚本操作符(“+”号),从而实现将两个工作表的数据拼接在一个工作表中。当运行此案例的Python代码(A343.py文件)之后,将把“订单表.xlsx”文件中的已出库订单表和未出库订单表拼接为全部订单表,已出库订单表如图023-1所示,未出库订单表如图023-2所示,拼接的全部订单表如图023-3所示。

图023-1

图023-2

图023-3

A343.py文件的Python代码如下:

import openpyxl
myBook=openpyxl.load_workbook('订单表.xlsx',data_only=True)
mySheet1=myBook['已出库订单表']
mySheet2=myBook['未出库订单表']
#将已出库订单表复制成全部订单表
mySheet3=myBook.copy_worksheet(mySheet1)
mySheet3.title='全部订单表'
#删除全部订单表的行(第1行除外)
while mySheet3.max_row >1:
      mySheet3.delete_rows(2)
myList3=list(mySheet1.values)[1:]
myList2=list(mySheet2.values)[1:]
#拼接已出库订单表(即列表myList3)和未出库订单表(即列表myList2)的所有行
#myList3.extend(myList2)
myList3=myList3+myList2
#根据订单编号升序排列全部订单表(即拼接之后的列表myList3)的行
myList3=sorted(myList3,key=lambda x:x[1])
#将全部订单表(即拼接之后的列表myList3)的行添加到mySheet3
for myRow in myList3:
    mySheet3.append(myRow)
myBook.save('结果表-订单表.xlsx')

在上面这段代码中,myList3=myList3+myList2表示将myList3和myList2两个列表的所有成员拼接在一起。一般情况下,当执行这种拼接操作时,myList3和myList2的列应该一一对应,但是即使未能一一对应,也能执行拼接操作(这种操作只是在第一个列表的结束位置简单罗列第二个列表的行)。此外,myList3=myList3+myList2也可以直接使用myList3.extend(myList2)代替。

此案例的源文件是MyCode\A343\A343.py。