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

024 使用列表推导式累加多个工作表

此案例主要通过使用Python语言的列表推导式以及Python语言的sum()函数,从而实现在工作簿中累加多个工作表指定单元格的数据。当运行此案例的Python代码(A021.py文件)之后,将累加“利润表.xlsx”文件中的12个工作表(如1月份利润表、2月份利润表等)的“营业总收入(万元)”数据(即各工作表B5单元格的数据),并据此创建全年利润表,代码运行前后的效果分别如图024-1和图024-2所示。

图024-1

图024-2

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

import openpyxl
myBook=openpyxl.load_workbook('利润表.xlsx')
#累加工作簿(myBook)所有工作表的B5单元格的数据
mySum=sum([mySheet['B5'].value for mySheet in myBook])
#在工作簿(myBook)中新增一个全年利润表(mySheet2)
mySheet2=myBook.copy_worksheet(myBook.worksheets[0])
mySheet2.title='全年利润表'
#在全年利润表(mySheet2)的对应单元格设置累加数(合计)
mySheet2['B5'].value=mySum
mySheet2['B6'].value=mySum
myBook.save('结果表-利润表.xlsx')

在上面这段代码中,mySum=sum([mySheet['B5'].value for mySheet in myBook])是一个列表推导式,表示逐个获取该工作簿(myBook)所有工作表(mySheet)的B5单元格的数据,并通过sum()函数累加这些数据。在这里,mySheet['B5']与mySheet.cell(5,2)完全相同,均指向同一个单元格。

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