openpyxl可能的lambda用法

时间:2018-04-05 23:34:02

标签: python openpyxl

我试图将一个单元格的值赋予等于其他几个单元格的总和。我可以使用像

这样的两行来实现这一点
 dailycell=45
 while sheet['E' + str(dailycell)].value is not None:
                mysum+=sheet['E'+str(dailycell)].value
                sheet['B13']=mysum
                dailycell+=1

凭借我有限的知识,我尝试了lambda。然后我得到了各种错误。我尝试了几次迭代,但没有人得到相同的结果。

sheet['B13']=lambda weeklybudget,sheet['E'+str(dailycell)].value:weeklybudget+=sheet['E'+str(dailycell)]

有替代方案吗?

1 个答案:

答案 0 :(得分:1)

为什么不迭代整个E列并总结值:

sheet["B13"] = sum(c.value or 0 for c in sheet['E'])

如果您对从哪一行开始有限制,那么只需抓住相应的切片:

sheet["B13"] = sum(c.value or 0 for c in sheet['E'][46:])

如果您需要在第一次出现None时停止求和,则需要一些外部帮助 - itertools.takewhile()会想到:

from itertools import takewhile

sheet["B13"] = sum(c.value for c in takewhile(lambda x: x.value is not None, sheet['E'][46:]))