我正在使用python的xlsxwriter模块将一些模拟结果写入excel文件。编写结果似乎运行良好。但是我还需要计算“模拟平均值”,可以通过= AVERAGE(CELL:CELL)完成。
不幸的是,尽管公式实际上在工作表中显示为“ = 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上找到更多解决方法。
答案 0 :(得分:2)
有人知道xlsxwriter如何自动执行此操作,而不仅仅是将公式写入单元格中?
从XlsxWriter FAQ/Known Issues:
公式结果在非Excel应用程序中显示为零
由于各种可能的公式以及它们之间的相互依赖性,因此XlsxWriter不会(实际上无法计算)将公式的结果写入XLSX文件时。而是将值0存储为公式结果。然后,它会在XLSX文件中设置一个全局标志,说打开该文件时应重新计算所有公式和函数。
这是Excel文档中推荐的方法,通常,它可以与电子表格应用程序正常工作。但是,不具备计算公式功能的应用程序(例如Excel Viewer)或多个移动应用程序将仅显示0结果。
有关更多详细信息和解决方法,请参见Formula Results。