From openpyxl
openpyxl builds a workbook cell by cell. Jetxl takes the whole frame plus a description of how it should look.From XlsxWriter
XlsxWriter is closer in spirit, since it’s also write-only. The main difference is that it defines format objects up front and applies them per write, while Jetxl takes plain dictionaries.From polars.write_excel
The closest starting point, since you already have a DataFrame.What to check after switching
Indexing
Indexing
openpyxl and XlsxWriter are each internally consistent about row bases. Jetxl isn’t: rows are 1-based for cell styles, header content and table ranges, and 0-based for chart and image positions. See Conventions.
Percentages
Percentages
If you were writing percentages as whole numbers with a plain format, the built-in percentage formats multiply them by 100. Store decimals instead.
Colors
Colors
XlsxWriter accepts named colors such as
red. Jetxl doesn’t, and drops them silently rather than raising. Convert to hex.Header styling
Header styling
styled_headers gives bold only, with no fill. If your openpyxl or XlsxWriter output had shaded headers, reproduce that with cell_styles on the header row.Reading
Reading
Any part of your code that opens an existing workbook has to stay on openpyxl. Jetxl only writes.