Skip to content

Limitations

Rahmad Afandi edited this page Jun 7, 2026 · 1 revision

Limitations

password is not encryption

FastExcel(..., password=...) sets Excel's worksheet-protection flag only. It does not encrypt the file — cell data is stored in plaintext and the protection is trivially removed. Do not rely on it to keep data confidential.

DataFrame fallback memory

When the Arrow zero-copy path is unavailable (legacy pandas without __arrow_c_stream__, or unusual dtypes), columns are materialized as Python lists — O(rows) memory per column. Modern pandas/polars take the Arrow path and stay efficient. See DataFrames.

CSV/TSV is single-sheet

A CSV/TSV target accepts exactly one sheet; adding more before .save() raises ValueError.

Autofit is approximate

Because all Excel paths use constant-memory mode, autofit=True column widths are estimated, not exact. Set explicit widths via column_width / column_widths for precise control, or autofit=False on large data for speed.

Not yet supported

Tracked in the issues — e.g. conditional formatting, charts, merged cells, row heights, hyperlinks as data, per-cell (vs per-column) formats. See the issue tracker.

Unsupported Arrow types

Arrow columns of a type the writer doesn't map (e.g. nested/list/struct) are written as empty cells rather than erroring.

Clone this wiki locally