4

我尝试使用 xlsxwriter python 插件创建一个 XLSX 文件。在这个 XLSX 中,我有 2 张纸:

  • 分析:包含一个包含信息的表格
  • 统计:包含一些信息和2个公式

这2个公式是:

=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>
4

2 回答 2

2

问题可能是公式函数名称是法语,但 Excel 希望它以英语存储/编写。至少在 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 翻译成英文和美式逗号运算符。

于 2013-09-17T15:01:13.193 回答
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)
于 2013-09-17T13:19:48.460 回答