xlsxwriter: agrega fórmula con otra hoja en ella

Intento crear un archivo XLSX con xlsxwriter python plugin. En este XLSX, tengo 2 hojas:

  • Analizar : Contener una tabla con informaciones.
  • Stat : contiene algunas informaciones y 2 fórmulas.

Estas 2 fórmulas son:

=NBVAL(Analyse!C:C)-1 =NB.SI(Analyse!D:D;"To change") 

Mi problema es cuando abro el archivo generado, tengo un error. Y las fórmulas no funcionan. Si edito la fórmula y solo presiono Enter, funciona.

Mi código:

 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) 

Cuando abro el informe de error XML. Tengo esto:

   error056160_04.xml Des erreurs ont été détectées dans le fichier « L:\UNMS\InputBEB\Output\UNMSViewer\public_html\Data\XLSX\todo\A6S54300.xlsx »  Enregistrements supprimés: Formule dans la partie /xl/worksheets/sheet2.xml   

Probablemente, el problema es que los nombres de las funciones de las fórmulas están en francés, pero Excel espera que se almacene / escriba en inglés . Al menos en los archivos escritos por XlsxWriter.

Intenta esto en su lugar:

 shInfo.write('G3','=COUNTA(Analyse!C:C)-1',information) shInfo.write('G5','=COUNTIF(Analyse!D:D,"To change")',information) 

Si me envías un pequeño archivo de muestra guardado con una versión en francés de Excel, echaré un vistazo y veré si es posible establecer una marca en los archivos escritos por XlsxWriter para indicar el idioma de las fórmulas.

Actualización : la fórmula COUNTIF() también necesita usar el operador de coma al estilo de los EE. UU. En lugar de ; . Actualización 2 : basado en el archivo de muestra proporcionado por @gatchan, no hay ningún identificador de idioma en el archivo. La fórmula se traduce al operador de coma al estilo inglés y estadounidense, mediante Excel, cuando se guarda.

En lugar del método write() debería usar write_formula () :

 shInfo.write_formula('G3','=NBVAL(Analyse!C:C)-1',information) shInfo.write_formula('G5','=NB.SI(Analyse!D:D;"To change")',information)