我尝试使用xlsxwriter python插件创建一个XLSX文件。 在这个XLSX中,我有两张纸:
这两个公式是:
=NBVAL(Analyse!C:C)-1
=NB.SI(Analyse!D:D;"To change")
我的问题是当我打开生成的文件时,我有一个错误。公式不起作用。如果我编辑公式并按Enter键,则可以正常工作。
我的代码:
shInfo = self.__workbook.add_worksheet("Stat")
shInfo.activate()
information = self.__workbook.add_format({'bg_color': '#BFBFBF',
'font_name': 'Courier New'})
shInfo.write('G3','=NBVAL(Analyse!C:C)-1',information)
shInfo.write('G5','=NB.SI(Analyse!D:D;"To change")',information)
当我打开XML错误报告时。我有这个:
<?xml version="1.0" encoding="UTF-8" standalone="true"?>
<recoveryLog xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<logFileName>error056160_04.xml</logFileName>
<summary>Des erreurs ont été détectées dans le fichier « L:\UNMS\InputBEB\Output\UNMSViewer\public_html\Data\XLSX\todo\A6S54300.xlsx »</summary>
<removedRecords summary="Liste des enregistrements supprimés ci-dessous :">
<removedRecord>Enregistrements supprimés: Formule dans la partie /xl/worksheets/sheet2.xml</removedRecord>
</removedRecords>
</recoveryLog>
答案 0 :(得分:1)
而不是write()
方法,您应该使用write_formula():
shInfo.write_formula('G3','=NBVAL(Analyse!C:C)-1',information)
shInfo.write_formula('G5','=NB.SI(Analyse!D:D;"To change")',information)
答案 1 :(得分:1)
问题可能是公式函数名称是法语,但Excel希望它存储/写入English。至少在XlsxWriter编写的文件中。
请改为尝试:
shInfo.write('G3','=COUNTA(Analyse!C:C)-1',information)
shInfo.write('G5','=COUNTIF(Analyse!D:D,"To change")',information)
如果您向我发送使用法语版Excel保存的小样本文件,我将查看是否可以在XlsxWriter编写的文件中设置标志以指示公式的语言。
更新:COUNTIF()
公式还需要使用美国式逗号运算符而不是;
。
更新2 :根据@gatchan提供的示例文件,文件中没有语言标识符。保存时,公式将由Excel翻译为英语和美式逗号运算符。