openpyxl 可能的 lambda 用法
openpyxl possible lambda usage
我试图将一个单元格的值分配为等于其他几个单元格的总和。我可以使用像
这样的两行来实现这一点
dailycell=45
while sheet['E' + str(dailycell)].value is not None:
mysum+=sheet['E'+str(dailycell)].value
sheet['B13']=mysum
dailycell+=1
以我有限的知识,我尝试了 lambda。然后我得到各种各样的错误。我尝试了几次迭代,但 none 得到了相同的结果。
sheet['B13']=lambda weeklybudget,sheet['E'+str(dailycell)].value:weeklybudget+=sheet['E'+str(dailycell)]
有替代方案吗?
为什么不遍历整个 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:]))
我试图将一个单元格的值分配为等于其他几个单元格的总和。我可以使用像
这样的两行来实现这一点 dailycell=45
while sheet['E' + str(dailycell)].value is not None:
mysum+=sheet['E'+str(dailycell)].value
sheet['B13']=mysum
dailycell+=1
以我有限的知识,我尝试了 lambda。然后我得到各种各样的错误。我尝试了几次迭代,但 none 得到了相同的结果。
sheet['B13']=lambda weeklybudget,sheet['E'+str(dailycell)].value:weeklybudget+=sheet['E'+str(dailycell)]
有替代方案吗?
为什么不遍历整个 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:]))