Skip to content

Capability matrix

Which option applies in which mode. Generated from the Rust sources, so it cannot drift from the implementation -- see scripts/gen_capability_matrix.py.

  • df_to_xlsx / dfs_to_xlsx / csv_to_xlsx -- whether the entry point accepts the option.
  • Per sheet -- whether dfs_to_xlsx lets a sheet override it, as opposed to only accepting it as a workbook-wide default.
  • constant_memory -- whether it still applies when constant_memory=True. Options marked skipped are ignored with a RuntimeWarning naming them. applies (inert) means it is applied but has no observable effect, because what it configures is itself skipped.
Option df_to_xlsx dfs_to_xlsx csv_to_xlsx Per sheet constant_memory
sheet_name yes -- yes -- applies
header yes yes -- yes applies
autofit yes yes -- yes skipped
table_style yes yes -- yes skipped
freeze_panes yes yes -- yes skipped
column_widths yes yes -- yes applies
table_name yes yes -- yes applies (inert)
header_format yes yes -- yes applies
row_heights yes yes -- yes skipped
constant_memory yes yes -- -- n/a
column_formats yes yes -- yes applies
conditional_formats yes yes -- yes skipped
formula_columns yes yes -- yes skipped
merged_ranges yes yes -- yes skipped
hyperlinks yes yes -- yes skipped
comments yes yes -- yes skipped
validations yes yes -- yes skipped
rich_text yes yes -- yes skipped
images yes yes -- yes skipped
checkboxes yes yes -- yes skipped
textboxes yes yes -- yes skipped
charts yes yes -- yes skipped
defined_names yes yes -- -- applies
cells yes yes -- yes skipped
sparklines yes yes -- yes skipped
parallel -- -- yes -- applies
date_order -- -- yes -- applies

What the shape of this table says

csv_to_xlsx takes 3 options (sheet_name, parallel, date_order) and none of the formatting or feature options. CSV conversion is a straight-through fast path, not a reduced-feature version of the DataFrame path: to format a CSV export, read it into a DataFrame and use df_to_xlsx.

constant_memory=True keeps 3 of the feature options (column_widths, header_format, column_formats) and skips 17. Those three are the ones applied while rows are being written; everything else needs to revisit a cell after the fact, which streaming output cannot do. A new option defaults to skipped, so this list only grows deliberately.

Of the 27 options, 22 can be overridden per sheet in dfs_to_xlsx. The rest are workbook-wide.