上QQ阅读APP看书,第一时间看更新
022 将多个工作表拼接成一个工作表
此案例主要通过在for循环中使用Worksheet的append()方法,从而实现将多个工作表的数据拼接(合并)在一个工作表中。当运行此案例的Python代码(A304.py文件)之后,将把“录取表.xlsx”文件中的北京大学录取表、清华大学录取表、浙江大学录取表、武汉大学录取表等所有工作表的数据合并在新建工作表(录取表)中,代码运行前后的效果分别如图022-1和图022-2所示。
图022-1
图022-2
A304.py文件的Python代码如下:
import openpyxl #根据"录取表.xlsx"文件创建工作簿(myBook) myBook=openpyxl.load_workbook('录取表.xlsx') #创建列表(myNewRows) myNewRows=[] #循环工作簿(myBook)的工作表(mySheet) for mySheet in myBook: #将工作表(mySheet)的考生数据添加到myNewRows myNewRows+=[[myCell.value for myCell in myRow] for myRow in mySheet.rows][1:] #创建新工作表(myNewSheet),即录取表 myNewSheet=myBook.create_sheet('录取表') #设置新工作表(myNewSheet)的表头 myNewSheet.append(['录取院校','专业','考生姓名','总分']) #在新工作表(myNewSheet)中添加所有考生 for myNewRow in myNewRows: myNewSheet.append(myNewRow) #保存工作簿,即将拼接多个工作表的结果保存为'结果表-录取表.xlsx'文件 myBook.save('结果表-录取表.xlsx')
在上面这段代码中,myNewRows+=[[myCell.value for myCell in myRow]for myRow in mySheet.rows][1:]表示以切片的方式去掉每个工作表(如武汉大学录取表)的表头,该行代码也可以使用下列代码代替:myNewRows+=list(mySheet.values)[1:]。此外,需要说明的是:for mySheet in myBook等价于for mySheet in myBook.worksheets。
此案例的源文件是MyCode\A304\A304.py。