The section outlines some answers to frequently asked questions.
No.
XlsxWriter is designed only as a file writer. It cannot read or modify an existing Excel file.
Due to a wide range of possible formulas and the interdependencies between them XlsxWriter doesn’t, and realistically cannot, calculate the result of a formula when it is written to an XLSX file. Instead, it stores the value 0 as the formula result. It then sets a global flag in the XLSX file to say that all formulas and functions should be recalculated when the file is opened.
This is the method recommended in the Excel documentation and in general it works fine with spreadsheet applications. However, applications that don’t have a facility to calculate formulas, such as Excel Viewer, or several mobile applications, will only display the 0 results.
If required, it is also possible to specify the calculated result of the
formula using the optional value
parameter in write_formula()
:
worksheet.write_formula('A1', '=2+2', None, 4)
See also Formula Results.
Note: LibreOffice doesn’t recalculate Excel formulas that reference other cells by default, in which case you will get the default XlsxWriter value of 0. You can work around this by setting the “LibreOffice Preferences -> LibreOffice Calc -> Formula -> Recalculation on File Load” option to “Always recalculate” (see the LibreOffice documentation). Or, you can set a blank result in the formula, which will also force recalculation:
worksheet.write_formula('A1', '=Sheet1!$A$1', None, '')
Microsoft refers to the @
in formulas as the Implicit Intersection
Operator.
It indicates that an input range is being reduced from multiple values to a
single value. In some cases it is just a warning indicator and doesn’t affect
the calculation or result. However, in practical terms it generally means that
your formula should be written as an array formula using either
write_array_formula()
or write_dynamic_array_formula()
.
For more details see the Dynamic Array support and Dynamic Arrays - The Implicit Intersection Operator “@” sections of the XlsxWriter documentation.
Currently no. However, it is a planned features to allow cell formats and data to be written separately.
All supported features are documented. Future features are on the Roadmap.
Although it is possible to password protect a worksheet using the Worksheet
protect()
method it isn’t possible to password protect the entire
workbook/file using XlsxWriter.
The reason for this is that a protected/encrypted xlsx file is in a different format from an ordinary xlsx file. This would require a lot of additional work, and testing, and isn’t something that is on the XlsxWriter roadmap.
However, it is possible to password protect an XlsxWriter generated file using a third party open source tool called msoffice-crypt. This works for macOS, Linux and Windows:
msoffice-crypt.exe -e -p password clear.xlsx encrypted.xlsx
Apart from this question, yes.