
上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。