These predate the Arrow interface and support far fewer options. Use
write_sheet_arrow unless you specifically need to avoid a DataFrame dependency.write_sheet
dict[str, list]
required
Column name to list of values. Every list must be the same length.
str
required
Output path.
str | None
default:"None"
Tab label.
list[dict] | None
Charts, same shape as the Arrow functions.
write_sheets
list[dict]
required
Each with
name and columns.str
required
Output path.
int
required
Required and positional.
What you give up
Formatting
No
column_formats, cell_styles, conditional_formats, tables, images or validation. Charts are the one extra supported.Speed
Values come from Python lists rather than Arrow buffers, so the zero-copy advantage doesn’t apply. The published benchmark puts this path at roughly twice the time of the Arrow one.
Supported types
str, int, float, bool, datetime, and None.
NaN and infinity become empty cells here too, matching the Arrow path. See Data types.