xlsxwriter python =AVERAGE 不工作

xlsxwriter python =AVERAGE not working

我正在使用 python 的 xlsxwriter 模块将一些模拟结果写入 excel 文件。写出结果似乎很完美。但我还需要计算 "average of the simulation",这可以通过 =AVERAGE(CELL:CELL) 来完成。
不幸的是,这似乎不起作用,虽然公式实际上在 sheet 中为“=AVERAGE(A2:A10001)”,但值只是设置为 0。如果我现在复制并粘贴此单元格,包含公式,到另一个单元格,它被执行。
有谁知道 xlsxwriter 如何自动执行这个而不是仅仅将公式写入单元格?

for x in range(0, len(exploit_names)):
    worksheet.write(amount_of_runs+1, x , '=AVERAGE(' + chr(65 + x) + '2:' + chr(65 + x)+str(amount_of_runs + 1) + ')')

解决方案

worksheet.write_formula(amount_of_runs + 1, x,
                        '=AVERAGE(' + chr(65 + x) + '2:' + chr(65 + x) + str(amount_of_runs + 1) + ')',
                        cell_format1, "#DIV/0!")

这立即执行了公式并为我提供了正确的单元格值。可以在@jmcnamara 在他的评论中发布的 Issue Page 上找到更多解决方法。

Does anyone know how xlsxwriter can execute this automatically instead of just writing the formula into the cell?

来自 XlsxWriter FAQ/Known Issues:

公式结果在非Excel应用程序中显示为零

由于可能的公式范围很广,而且它们之间存在相互依赖关系,XlsxWriter 不会,实际上也不能在将公式写入 XLSX 文件时计算公式的结果。相反,它将值 0 存储为公式结果。然后它在 XLSX 文件中设置一个全局标志,表示打开文件时应重新计算所有公式和函数。

这是 Excel 文档中推荐的方法,通常它适用于电子表格应用程序。但是,没有公式计算工具的应用程序(例如 Excel Viewer)或一些移动应用程序将只显示 0 个结果。

有关详细信息和解决方法,请参阅 Formula Results