我有一个python脚本,最后使用xlsxwriter写入excel文件。一切正常但是公式在启动时会出错,如果我复制并粘贴完全相同的公式,它会给出预期的结果。 这是一行:
worksheet.write_formula('I2', '=SUMIF(B2:B{0};1;F2:F{0})'.format(len(df.index)+1))
编辑:我尝试导出为xml,我看到xlsxwriter写道;作为|。我的意思是从xlsxwriter给出公式的错误是:
<Cell ss:Formula="of:=SUMIF([.B2:.B11]|1|[.F2:.F11])">
<Data ss:Type="String">Err:508</Data>
复制并粘贴的工作公式为:
<Cell ss:Formula="of:=SUMIF([.B2:.B11];1;[.F2:.F11])">
<Data ss:Type="Number">485</Data>
我不知道这里的问题是什么。谢谢
答案 0 :(得分:2)
转到给定的链接我相信你会找到答案:XlsxWriter: Working with Formulas
具体来说,非美国Excel函数和语法说:
Excel以美国英语版的格式存储公式,无论最终用户的Excel版本的语言或区域设置如何。因此,必须使用美式样式分隔符/范围运算符编写公式,该运算符是逗号(不是分号)。具有多个值的公式应编写如下:
worksheet.write_formula('A1', '=SUM(1, 2, 3)') # OK
worksheet.write_formula('A2', '=SUM(1; 2; 3)') # Semi-colon. Error on load.
希望这有帮助。
答案 1 :(得分:1)
我需要更改LibreOffice设置&gt; LibreOffice Calc&gt;用于重新计算文件加载的公式。但要取代;作为|仍然存在
LibreOffice故意不重新计算旧的电子表格, 因为公式从版本更新到版本或之间 不同的电子表格程序,结果可能会有所不同。去 工具 - 选项 - LibreOffice Calc,在文件上重新计算 加载&#39;,更改两个下拉菜单,Excel 2007及更新版本&#39;和&#39; ODF 电子表格(不是由LibreOffice保存)&#39;,始终重新计算&#39;。 单击“确定”,关闭电子表格和LibreOffice。现在打开文件 LibreOffice,您应该看到公式已重新计算。
同样转到工具 - 单元格内容并确保AutoCalculate是 地选择。