write_formula给出错误,除非我复制并粘贴完全相同的公式

时间:2016-05-11 05:22:44

标签: python pandas xlsxwriter

我有一个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>

我不知道这里的问题是什么。谢谢

2 个答案:

答案 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是   地选择。