Generated: 2026-02-16T23:15:20.993545+00:00 Profile: xlsx Platform: Darwin-arm64 Python: 3.12.3 Commit: f7a64e0 Config: warmup=3 iters=25 iteration_policy=fixed breakdown=True
These numbers measure only the library under test. Write timings do NOT include oracle verification.
Tier 0 — Basic Values
| Feature | calamine-styled (R p50 ms) |
|---|---|
| cell_values | 0.21 |
| formulas | 0.16 |
| multiple_sheets | 0.06 |
Tier 1 — Formatting
| Feature | calamine-styled (R p50 ms) |
|---|---|
| alignment | 0.09 |
| background_colors | 0.08 |
| borders | 0.36 |
| dimensions | 0.08 |
| number_formats | 0.09 |
| text_formatting | 0.15 |
Tier 2 — Advanced
| Feature | calamine-styled (R p50 ms) |
|---|---|
| comments | 0.21 |
| conditional_formatting | 0.21 |
| data_validation | 0.15 |
| freeze_panes | 0.22 |
| hyperlinks | 0.22 |
| images | 0.05 |
| merged_cells | 0.20 |
| named_ranges | 0.05 |
| pivot_tables | 0.05 |
| tables | 0.05 |
Tier 0 — Basic Values
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) |
|---|---|---|---|
| cell_values | 0.21 | 1.23 | 1.32 |
| formulas | 0.16 | 1.16 | 1.47 |
| multiple_sheets | 0.06 | 1.25 | 1.84 |
Tier 1 — Formatting
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) |
|---|---|---|---|
| alignment | 0.09 | 1.19 | 1.45 |
| background_colors | 0.08 | 1.01 | 1.33 |
| borders | 0.36 | 1.70 | 2.62 |
| dimensions | 0.08 | 0.94 | 1.22 |
| number_formats | 0.09 | 1.03 | 1.30 |
| text_formatting | 0.15 | 1.66 | 1.73 |
Tier 2 — Advanced
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) |
|---|---|---|---|
| comments | 0.21 | 1.10 | 1.42 |
| conditional_formatting | 0.21 | 1.37 | 1.74 |
| data_validation | 0.15 | 1.24 | 1.30 |
| freeze_panes | 0.22 | 1.33 | 1.98 |
| hyperlinks | 0.22 | 1.16 | 1.28 |
| images | 0.05 | 1.16 | 1.69 |
| merged_cells | 0.20 | 1.23 | 1.42 |
| named_ranges | 0.05 | 1.07 | 1.42 |
| pivot_tables | 0.05 | 0.85 | 1.18 |
| tables | 0.05 | 1.39 | 1.18 |
Tier 0 — Basic Values
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) |
|---|---|---|---|---|
| cell_values | 0.21 | 1.23 | 1.32 | 4.69 |
| formulas | 0.16 | 1.16 | 1.47 | 1.37 |
| multiple_sheets | 0.06 | 1.25 | 1.84 | 0.96 |
Tier 1 — Formatting
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) |
|---|---|---|---|---|
| alignment | 0.09 | 1.19 | 1.45 | 0.93 |
| background_colors | 0.08 | 1.01 | 1.33 | 0.87 |
| borders | 0.36 | 1.70 | 2.62 | 1.27 |
| dimensions | 0.08 | 0.94 | 1.22 | 0.80 |
| number_formats | 0.09 | 1.03 | 1.30 | 0.87 |
| text_formatting | 0.15 | 1.66 | 1.73 | 1.37 |
Tier 2 — Advanced
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) |
|---|---|---|---|---|
| comments | 0.21 | 1.10 | 1.42 | 0.84 |
| conditional_formatting | 0.21 | 1.37 | 1.74 | 0.92 |
| data_validation | 0.15 | 1.24 | 1.30 | 0.86 |
| freeze_panes | 0.22 | 1.33 | 1.98 | 0.96 |
| hyperlinks | 0.22 | 1.16 | 1.28 | 0.88 |
| images | 0.05 | 1.16 | 1.69 | 0.79 |
| merged_cells | 0.20 | 1.23 | 1.42 | 0.87 |
| named_ranges | 0.05 | 1.07 | 1.42 | 0.84 |
| pivot_tables | 0.05 | 0.85 | 1.18 | 0.75 |
| tables | 0.05 | 1.39 | 1.18 | 0.86 |
Tier 0 — Basic Values
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) |
|---|---|---|---|---|---|---|
| cell_values | 0.21 | 1.23 | 1.32 | 4.69 | 1.59 | 1.52 |
| formulas | 0.16 | 1.16 | 1.47 | 1.37 | 1.47 | 1.78 |
| multiple_sheets | 0.06 | 1.25 | 1.84 | 0.96 | 1.68 | 2.16 |
Tier 1 — Formatting
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) |
|---|---|---|---|---|---|---|
| alignment | 0.09 | 1.19 | 1.45 | 0.93 | 1.34 | 1.43 |
| background_colors | 0.08 | 1.01 | 1.33 | 0.87 | 1.20 | 1.37 |
| borders | 0.36 | 1.70 | 2.62 | 1.27 | 2.09 | 1.76 |
| dimensions | 0.08 | 0.94 | 1.22 | 0.80 | 1.15 | 1.23 |
| number_formats | 0.09 | 1.03 | 1.30 | 0.87 | 1.19 | 1.42 |
| text_formatting | 0.15 | 1.66 | 1.73 | 1.37 | 1.83 | 1.52 |
Tier 2 — Advanced
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) |
|---|---|---|---|---|---|---|
| comments | 0.21 | 1.10 | 1.42 | 0.84 | 1.17 | 1.24 |
| conditional_formatting | 0.21 | 1.37 | 1.74 | 0.92 | 1.60 | 1.51 |
| data_validation | 0.15 | 1.24 | 1.30 | 0.86 | 1.57 | 1.25 |
| freeze_panes | 0.22 | 1.33 | 1.98 | 0.96 | 1.68 | 2.09 |
| hyperlinks | 0.22 | 1.16 | 1.28 | 0.88 | 1.45 | 1.21 |
| images | 0.05 | 1.16 | 1.69 | 0.79 | 1.11 | 1.24 |
| merged_cells | 0.20 | 1.23 | 1.42 | 0.87 | 1.20 | 1.42 |
| named_ranges | 0.05 | 1.07 | 1.42 | 0.84 | 1.37 | 1.53 |
| pivot_tables | 0.05 | 0.85 | 1.18 | 0.75 | 1.03 | 1.25 |
| tables | 0.05 | 1.39 | 1.18 | 0.86 | 1.50 | 1.24 |
Tier 0 — Basic Values
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) |
|---|---|---|---|---|---|---|---|
| cell_values | 0.21 | 1.23 | 1.32 | 4.69 | 1.59 | 1.52 | 0.35 |
| formulas | 0.16 | 1.16 | 1.47 | 1.37 | 1.47 | 1.78 | 0.39 |
| multiple_sheets | 0.06 | 1.25 | 1.84 | 0.96 | 1.68 | 2.16 | 0.51 |
Tier 1 — Formatting
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) |
|---|---|---|---|---|---|---|---|
| alignment | 0.09 | 1.19 | 1.45 | 0.93 | 1.34 | 1.43 | 0.25 |
| background_colors | 0.08 | 1.01 | 1.33 | 0.87 | 1.20 | 1.37 | 0.23 |
| borders | 0.36 | 1.70 | 2.62 | 1.27 | 2.09 | 1.76 | 0.24 |
| dimensions | 0.08 | 0.94 | 1.22 | 0.80 | 1.15 | 1.23 | 0.30 |
| number_formats | 0.09 | 1.03 | 1.30 | 0.87 | 1.19 | 1.42 | 0.24 |
| text_formatting | 0.15 | 1.66 | 1.73 | 1.37 | 1.83 | 1.52 | 0.28 |
Tier 2 — Advanced
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) |
|---|---|---|---|---|---|---|---|
| comments | 0.21 | 1.10 | 1.42 | 0.84 | 1.17 | 1.24 | 0.23 |
| conditional_formatting | 0.21 | 1.37 | 1.74 | 0.92 | 1.60 | 1.51 | 0.37 |
| data_validation | 0.15 | 1.24 | 1.30 | 0.86 | 1.57 | 1.25 | 0.44 |
| freeze_panes | 0.22 | 1.33 | 1.98 | 0.96 | 1.68 | 2.09 | 0.47 |
| hyperlinks | 0.22 | 1.16 | 1.28 | 0.88 | 1.45 | 1.21 | 0.36 |
| images | 0.05 | 1.16 | 1.69 | 0.79 | 1.11 | 1.24 | 0.23 |
| merged_cells | 0.20 | 1.23 | 1.42 | 0.87 | 1.20 | 1.42 | 0.23 |
| named_ranges | 0.05 | 1.07 | 1.42 | 0.84 | 1.37 | 1.53 | 0.43 |
| pivot_tables | 0.05 | 0.85 | 1.18 | 0.75 | 1.03 | 1.25 | 0.25 |
| tables | 0.05 | 1.39 | 1.18 | 0.86 | 1.50 | 1.24 | 0.34 |
Tier 0 — Basic Values
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) | pyexcel (R p50 ms) | pyexcel (W p50 ms) |
|---|---|---|---|---|---|---|---|---|---|
| cell_values | 0.21 | 1.23 | 1.32 | 4.69 | 1.59 | 1.52 | 0.35 | 1.36 | 1.33 |
| formulas | 0.16 | 1.16 | 1.47 | 1.37 | 1.47 | 1.78 | 0.39 | 1.22 | 1.59 |
| multiple_sheets | 0.06 | 1.25 | 1.84 | 0.96 | 1.68 | 2.16 | 0.51 | 1.36 | 1.87 |
Tier 1 — Formatting
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) | pyexcel (R p50 ms) | pyexcel (W p50 ms) |
|---|---|---|---|---|---|---|---|---|---|
| alignment | 0.09 | 1.19 | 1.45 | 0.93 | 1.34 | 1.43 | 0.25 | 1.24 | 1.26 |
| background_colors | 0.08 | 1.01 | 1.33 | 0.87 | 1.20 | 1.37 | 0.23 | 1.05 | 1.19 |
| borders | 0.36 | 1.70 | 2.62 | 1.27 | 2.09 | 1.76 | 0.24 | 1.89 | 1.47 |
| dimensions | 0.08 | 0.94 | 1.22 | 0.80 | 1.15 | 1.23 | 0.30 | 1.01 | 1.19 |
| number_formats | 0.09 | 1.03 | 1.30 | 0.87 | 1.19 | 1.42 | 0.24 | 1.10 | 1.24 |
| text_formatting | 0.15 | 1.66 | 1.73 | 1.37 | 1.83 | 1.52 | 0.28 | 1.70 | 1.34 |
Tier 2 — Advanced
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) | pyexcel (R p50 ms) | pyexcel (W p50 ms) |
|---|---|---|---|---|---|---|---|---|---|
| comments | 0.21 | 1.10 | 1.42 | 0.84 | 1.17 | 1.24 | 0.23 | 1.18 | 1.17 |
| conditional_formatting | 0.21 | 1.37 | 1.74 | 0.92 | 1.60 | 1.51 | 0.37 | 1.41 | 1.46 |
| data_validation | 0.15 | 1.24 | 1.30 | 0.86 | 1.57 | 1.25 | 0.44 | 1.30 | 1.17 |
| freeze_panes | 0.22 | 1.33 | 1.98 | 0.96 | 1.68 | 2.09 | 0.47 | 1.45 | 2.03 |
| hyperlinks | 0.22 | 1.16 | 1.28 | 0.88 | 1.45 | 1.21 | 0.36 | 1.27 | 1.19 |
| images | 0.05 | 1.16 | 1.69 | 0.79 | 1.11 | 1.24 | 0.23 | 1.21 | 1.18 |
| merged_cells | 0.20 | 1.23 | 1.42 | 0.87 | 1.20 | 1.42 | 0.23 | 1.29 | 1.22 |
| named_ranges | 0.05 | 1.07 | 1.42 | 0.84 | 1.37 | 1.53 | 0.43 | 1.19 | 1.44 |
| pivot_tables | 0.05 | 0.85 | 1.18 | 0.75 | 1.03 | 1.25 | 0.25 | 0.91 | 1.17 |
| tables | 0.05 | 1.39 | 1.18 | 0.86 | 1.50 | 1.24 | 0.34 | 1.74 | 1.16 |
Tier 0 — Basic Values
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) | pyexcel (R p50 ms) | pyexcel (W p50 ms) | pylightxl (R p50 ms) | pylightxl (W p50 ms) |
|---|---|---|---|---|---|---|---|---|---|---|---|
| cell_values | 0.21 | 1.23 | 1.32 | 4.69 | 1.59 | 1.52 | 0.35 | 1.36 | 1.33 | 1.32 | 0.36 |
| formulas | 0.16 | 1.16 | 1.47 | 1.37 | 1.47 | 1.78 | 0.39 | 1.22 | 1.59 | 1.15 | 0.28 |
| multiple_sheets | 0.06 | 1.25 | 1.84 | 0.96 | 1.68 | 2.16 | 0.51 | 1.36 | 1.87 | 1.31 | 0.34 |
Tier 1 — Formatting
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) | pyexcel (R p50 ms) | pyexcel (W p50 ms) | pylightxl (R p50 ms) | pylightxl (W p50 ms) |
|---|---|---|---|---|---|---|---|---|---|---|---|
| alignment | 0.09 | 1.19 | 1.45 | 0.93 | 1.34 | 1.43 | 0.25 | 1.24 | 1.26 | — | 0.32 |
| background_colors | 0.08 | 1.01 | 1.33 | 0.87 | 1.20 | 1.37 | 0.23 | 1.05 | 1.19 | 0.96 | 0.30 |
| borders | 0.36 | 1.70 | 2.62 | 1.27 | 2.09 | 1.76 | 0.24 | 1.89 | 1.47 | — | 0.49 |
| dimensions | 0.08 | 0.94 | 1.22 | 0.80 | 1.15 | 1.23 | 0.30 | 1.01 | 1.19 | 0.91 | 0.24 |
| number_formats | 0.09 | 1.03 | 1.30 | 0.87 | 1.19 | 1.42 | 0.24 | 1.10 | 1.24 | 0.98 | 0.29 |
| text_formatting | 0.15 | 1.66 | 1.73 | 1.37 | 1.83 | 1.52 | 0.28 | 1.70 | 1.34 | 1.48 | 0.43 |
Tier 2 — Advanced
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) | pyexcel (R p50 ms) | pyexcel (W p50 ms) | pylightxl (R p50 ms) | pylightxl (W p50 ms) |
|---|---|---|---|---|---|---|---|---|---|---|---|
| comments | 0.21 | 1.10 | 1.42 | 0.84 | 1.17 | 1.24 | 0.23 | 1.18 | 1.17 | 1.14 | 0.24 |
| conditional_formatting | 0.21 | 1.37 | 1.74 | 0.92 | 1.60 | 1.51 | 0.37 | 1.41 | 1.46 | — | 0.23 |
| data_validation | 0.15 | 1.24 | 1.30 | 0.86 | 1.57 | 1.25 | 0.44 | 1.30 | 1.17 | — | 0.24 |
| freeze_panes | 0.22 | 1.33 | 1.98 | 0.96 | 1.68 | 2.09 | 0.47 | 1.45 | 2.03 | — | 0.30 |
| hyperlinks | 0.22 | 1.16 | 1.28 | 0.88 | 1.45 | 1.21 | 0.36 | 1.27 | 1.19 | — | 0.26 |
| images | 0.05 | 1.16 | 1.69 | 0.79 | 1.11 | 1.24 | 0.23 | 1.21 | 1.18 | — | 0.22 |
| merged_cells | 0.20 | 1.23 | 1.42 | 0.87 | 1.20 | 1.42 | 0.23 | 1.29 | 1.22 | 0.99 | 0.28 |
| named_ranges | 0.05 | 1.07 | 1.42 | 0.84 | 1.37 | 1.53 | 0.43 | 1.19 | 1.44 | — | 0.25 |
| pivot_tables | 0.05 | 0.85 | 1.18 | 0.75 | 1.03 | 1.25 | 0.25 | 0.91 | 1.17 | 0.82 | 0.26 |
| tables | 0.05 | 1.39 | 1.18 | 0.86 | 1.50 | 1.24 | 0.34 | 1.74 | 1.16 | — | 0.27 |
Tier 0 — Basic Values
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) | pyexcel (R p50 ms) | pyexcel (W p50 ms) | pylightxl (R p50 ms) | pylightxl (W p50 ms) | python-calamine (R p50 ms) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| cell_values | 0.21 | 1.23 | 1.32 | 4.69 | 1.59 | 1.52 | 0.35 | 1.36 | 1.33 | 1.32 | 0.36 | 0.88 |
| formulas | 0.16 | 1.16 | 1.47 | 1.37 | 1.47 | 1.78 | 0.39 | 1.22 | 1.59 | 1.15 | 0.28 | 0.16 |
| multiple_sheets | 0.06 | 1.25 | 1.84 | 0.96 | 1.68 | 2.16 | 0.51 | 1.36 | 1.87 | 1.31 | 0.34 | 0.06 |
Tier 1 — Formatting
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) | pyexcel (R p50 ms) | pyexcel (W p50 ms) | pylightxl (R p50 ms) | pylightxl (W p50 ms) | python-calamine (R p50 ms) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| alignment | 0.09 | 1.19 | 1.45 | 0.93 | 1.34 | 1.43 | 0.25 | 1.24 | 1.26 | — | 0.32 | 0.05 |
| background_colors | 0.08 | 1.01 | 1.33 | 0.87 | 1.20 | 1.37 | 0.23 | 1.05 | 1.19 | 0.96 | 0.30 | 0.06 |
| borders | 0.36 | 1.70 | 2.62 | 1.27 | 2.09 | 1.76 | 0.24 | 1.89 | 1.47 | — | 0.49 | 0.07 |
| dimensions | 0.08 | 0.94 | 1.22 | 0.80 | 1.15 | 1.23 | 0.30 | 1.01 | 1.19 | 0.91 | 0.24 | 0.06 |
| number_formats | 0.09 | 1.03 | 1.30 | 0.87 | 1.19 | 1.42 | 0.24 | 1.10 | 1.24 | 0.98 | 0.29 | 0.06 |
| text_formatting | 0.15 | 1.66 | 1.73 | 1.37 | 1.83 | 1.52 | 0.28 | 1.70 | 1.34 | 1.48 | 0.43 | 0.08 |
Tier 2 — Advanced
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) | pyexcel (R p50 ms) | pyexcel (W p50 ms) | pylightxl (R p50 ms) | pylightxl (W p50 ms) | python-calamine (R p50 ms) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| comments | 0.21 | 1.10 | 1.42 | 0.84 | 1.17 | 1.24 | 0.23 | 1.18 | 1.17 | 1.14 | 0.24 | 0.06 |
| conditional_formatting | 0.21 | 1.37 | 1.74 | 0.92 | 1.60 | 1.51 | 0.37 | 1.41 | 1.46 | — | 0.23 | 0.05 |
| data_validation | 0.15 | 1.24 | 1.30 | 0.86 | 1.57 | 1.25 | 0.44 | 1.30 | 1.17 | — | 0.24 | 0.05 |
| freeze_panes | 0.22 | 1.33 | 1.98 | 0.96 | 1.68 | 2.09 | 0.47 | 1.45 | 2.03 | — | 0.30 | 0.05 |
| hyperlinks | 0.22 | 1.16 | 1.28 | 0.88 | 1.45 | 1.21 | 0.36 | 1.27 | 1.19 | — | 0.26 | 0.05 |
| images | 0.05 | 1.16 | 1.69 | 0.79 | 1.11 | 1.24 | 0.23 | 1.21 | 1.18 | — | 0.22 | 0.05 |
| merged_cells | 0.20 | 1.23 | 1.42 | 0.87 | 1.20 | 1.42 | 0.23 | 1.29 | 1.22 | 0.99 | 0.28 | 0.06 |
| named_ranges | 0.05 | 1.07 | 1.42 | 0.84 | 1.37 | 1.53 | 0.43 | 1.19 | 1.44 | — | 0.25 | 0.05 |
| pivot_tables | 0.05 | 0.85 | 1.18 | 0.75 | 1.03 | 1.25 | 0.25 | 0.91 | 1.17 | 0.82 | 0.26 | 0.05 |
| tables | 0.05 | 1.39 | 1.18 | 0.86 | 1.50 | 1.24 | 0.34 | 1.74 | 1.16 | — | 0.27 | 0.06 |
Tier 0 — Basic Values
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) | pyexcel (R p50 ms) | pyexcel (W p50 ms) | pylightxl (R p50 ms) | pylightxl (W p50 ms) | python-calamine (R p50 ms) | rust_xlsxwriter (W p50 ms) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| cell_values | 0.21 | 1.23 | 1.32 | 4.69 | 1.59 | 1.52 | 0.35 | 1.36 | 1.33 | 1.32 | 0.36 | 0.88 | 0.35 |
| formulas | 0.16 | 1.16 | 1.47 | 1.37 | 1.47 | 1.78 | 0.39 | 1.22 | 1.59 | 1.15 | 0.28 | 0.16 | 0.32 |
| multiple_sheets | 0.06 | 1.25 | 1.84 | 0.96 | 1.68 | 2.16 | 0.51 | 1.36 | 1.87 | 1.31 | 0.34 | 0.06 | 0.37 |
Tier 1 — Formatting
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) | pyexcel (R p50 ms) | pyexcel (W p50 ms) | pylightxl (R p50 ms) | pylightxl (W p50 ms) | python-calamine (R p50 ms) | rust_xlsxwriter (W p50 ms) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| alignment | 0.09 | 1.19 | 1.45 | 0.93 | 1.34 | 1.43 | 0.25 | 1.24 | 1.26 | — | 0.32 | 0.05 | 0.36 |
| background_colors | 0.08 | 1.01 | 1.33 | 0.87 | 1.20 | 1.37 | 0.23 | 1.05 | 1.19 | 0.96 | 0.30 | 0.06 | 0.29 |
| borders | 0.36 | 1.70 | 2.62 | 1.27 | 2.09 | 1.76 | 0.24 | 1.89 | 1.47 | — | 0.49 | 0.07 | 0.47 |
| dimensions | 0.08 | 0.94 | 1.22 | 0.80 | 1.15 | 1.23 | 0.30 | 1.01 | 1.19 | 0.91 | 0.24 | 0.06 | 0.28 |
| number_formats | 0.09 | 1.03 | 1.30 | 0.87 | 1.19 | 1.42 | 0.24 | 1.10 | 1.24 | 0.98 | 0.29 | 0.06 | 0.31 |
| text_formatting | 0.15 | 1.66 | 1.73 | 1.37 | 1.83 | 1.52 | 0.28 | 1.70 | 1.34 | 1.48 | 0.43 | 0.08 | 0.40 |
Tier 2 — Advanced
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) | pyexcel (R p50 ms) | pyexcel (W p50 ms) | pylightxl (R p50 ms) | pylightxl (W p50 ms) | python-calamine (R p50 ms) | rust_xlsxwriter (W p50 ms) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| comments | 0.21 | 1.10 | 1.42 | 0.84 | 1.17 | 1.24 | 0.23 | 1.18 | 1.17 | 1.14 | 0.24 | 0.06 | 0.41 |
| conditional_formatting | 0.21 | 1.37 | 1.74 | 0.92 | 1.60 | 1.51 | 0.37 | 1.41 | 1.46 | — | 0.23 | 0.05 | 0.35 |
| data_validation | 0.15 | 1.24 | 1.30 | 0.86 | 1.57 | 1.25 | 0.44 | 1.30 | 1.17 | — | 0.24 | 0.05 | 0.26 |
| freeze_panes | 0.22 | 1.33 | 1.98 | 0.96 | 1.68 | 2.09 | 0.47 | 1.45 | 2.03 | — | 0.30 | 0.05 | 0.98 |
| hyperlinks | 0.22 | 1.16 | 1.28 | 0.88 | 1.45 | 1.21 | 0.36 | 1.27 | 1.19 | — | 0.26 | 0.05 | 0.32 |
| images | 0.05 | 1.16 | 1.69 | 0.79 | 1.11 | 1.24 | 0.23 | 1.21 | 1.18 | — | 0.22 | 0.05 | 0.29 |
| merged_cells | 0.20 | 1.23 | 1.42 | 0.87 | 1.20 | 1.42 | 0.23 | 1.29 | 1.22 | 0.99 | 0.28 | 0.06 | 0.30 |
| named_ranges | 0.05 | 1.07 | 1.42 | 0.84 | 1.37 | 1.53 | 0.43 | 1.19 | 1.44 | — | 0.25 | 0.05 | 0.33 |
| pivot_tables | 0.05 | 0.85 | 1.18 | 0.75 | 1.03 | 1.25 | 0.25 | 0.91 | 1.17 | 0.82 | 0.26 | 0.05 | 0.25 |
| tables | 0.05 | 1.39 | 1.18 | 0.86 | 1.50 | 1.24 | 0.34 | 1.74 | 1.16 | — | 0.27 | 0.06 | 0.26 |
Tier 0 — Basic Values
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) | pyexcel (R p50 ms) | pyexcel (W p50 ms) | pylightxl (R p50 ms) | pylightxl (W p50 ms) | python-calamine (R p50 ms) | rust_xlsxwriter (W p50 ms) | tablib (R p50 ms) | tablib (W p50 ms) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| cell_values | 0.21 | 1.23 | 1.32 | 4.69 | 1.59 | 1.52 | 0.35 | 1.36 | 1.33 | 1.32 | 0.36 | 0.88 | 0.35 | 1.77 | 2.03 |
| formulas | 0.16 | 1.16 | 1.47 | 1.37 | 1.47 | 1.78 | 0.39 | 1.22 | 1.59 | 1.15 | 0.28 | 0.16 | 0.32 | 1.13 | 1.50 |
| multiple_sheets | 0.06 | 1.25 | 1.84 | 0.96 | 1.68 | 2.16 | 0.51 | 1.36 | 1.87 | 1.31 | 0.34 | 0.06 | 0.37 | 1.26 | 1.82 |
Tier 1 — Formatting
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) | pyexcel (R p50 ms) | pyexcel (W p50 ms) | pylightxl (R p50 ms) | pylightxl (W p50 ms) | python-calamine (R p50 ms) | rust_xlsxwriter (W p50 ms) | tablib (R p50 ms) | tablib (W p50 ms) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| alignment | 0.09 | 1.19 | 1.45 | 0.93 | 1.34 | 1.43 | 0.25 | 1.24 | 1.26 | — | 0.32 | 0.05 | 0.36 | 1.17 | 1.25 |
| background_colors | 0.08 | 1.01 | 1.33 | 0.87 | 1.20 | 1.37 | 0.23 | 1.05 | 1.19 | 0.96 | 0.30 | 0.06 | 0.29 | 0.98 | 1.21 |
| borders | 0.36 | 1.70 | 2.62 | 1.27 | 2.09 | 1.76 | 0.24 | 1.89 | 1.47 | — | 0.49 | 0.07 | 0.47 | 1.68 | 1.40 |
| dimensions | 0.08 | 0.94 | 1.22 | 0.80 | 1.15 | 1.23 | 0.30 | 1.01 | 1.19 | 0.91 | 0.24 | 0.06 | 0.28 | 0.95 | 1.17 |
| number_formats | 0.09 | 1.03 | 1.30 | 0.87 | 1.19 | 1.42 | 0.24 | 1.10 | 1.24 | 0.98 | 0.29 | 0.06 | 0.31 | 1.01 | 1.24 |
| text_formatting | 0.15 | 1.66 | 1.73 | 1.37 | 1.83 | 1.52 | 0.28 | 1.70 | 1.34 | 1.48 | 0.43 | 0.08 | 0.40 | 1.63 | 1.37 |
Tier 2 — Advanced
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) | pyexcel (R p50 ms) | pyexcel (W p50 ms) | pylightxl (R p50 ms) | pylightxl (W p50 ms) | python-calamine (R p50 ms) | rust_xlsxwriter (W p50 ms) | tablib (R p50 ms) | tablib (W p50 ms) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| comments | 0.21 | 1.10 | 1.42 | 0.84 | 1.17 | 1.24 | 0.23 | 1.18 | 1.17 | 1.14 | 0.24 | 0.06 | 0.41 | 0.95 | 1.15 |
| conditional_formatting | 0.21 | 1.37 | 1.74 | 0.92 | 1.60 | 1.51 | 0.37 | 1.41 | 1.46 | — | 0.23 | 0.05 | 0.35 | 1.32 | 1.44 |
| data_validation | 0.15 | 1.24 | 1.30 | 0.86 | 1.57 | 1.25 | 0.44 | 1.30 | 1.17 | — | 0.24 | 0.05 | 0.26 | 1.21 | 1.15 |
| freeze_panes | 0.22 | 1.33 | 1.98 | 0.96 | 1.68 | 2.09 | 0.47 | 1.45 | 2.03 | — | 0.30 | 0.05 | 0.98 | 1.31 | 2.04 |
| hyperlinks | 0.22 | 1.16 | 1.28 | 0.88 | 1.45 | 1.21 | 0.36 | 1.27 | 1.19 | — | 0.26 | 0.05 | 0.32 | 1.16 | 1.18 |
| images | 0.05 | 1.16 | 1.69 | 0.79 | 1.11 | 1.24 | 0.23 | 1.21 | 1.18 | — | 0.22 | 0.05 | 0.29 | 0.94 | 1.15 |
| merged_cells | 0.20 | 1.23 | 1.42 | 0.87 | 1.20 | 1.42 | 0.23 | 1.29 | 1.22 | 0.99 | 0.28 | 0.06 | 0.30 | 1.01 | 1.22 |
| named_ranges | 0.05 | 1.07 | 1.42 | 0.84 | 1.37 | 1.53 | 0.43 | 1.19 | 1.44 | — | 0.25 | 0.05 | 0.33 | 1.09 | 1.42 |
| pivot_tables | 0.05 | 0.85 | 1.18 | 0.75 | 1.03 | 1.25 | 0.25 | 0.91 | 1.17 | 0.82 | 0.26 | 0.05 | 0.25 | 0.86 | 1.19 |
| tables | 0.05 | 1.39 | 1.18 | 0.86 | 1.50 | 1.24 | 0.34 | 1.74 | 1.16 | — | 0.27 | 0.06 | 0.26 | 1.25 | 1.16 |
Tier 0 — Basic Values
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) | pyexcel (R p50 ms) | pyexcel (W p50 ms) | pylightxl (R p50 ms) | pylightxl (W p50 ms) | python-calamine (R p50 ms) | rust_xlsxwriter (W p50 ms) | tablib (R p50 ms) | tablib (W p50 ms) | wolfxl (R p50 ms) | wolfxl (W p50 ms) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| cell_values | 0.21 | 1.23 | 1.32 | 4.69 | 1.59 | 1.52 | 0.35 | 1.36 | 1.33 | 1.32 | 0.36 | 0.88 | 0.35 | 1.77 | 2.03 | 0.21 | 0.36 |
| formulas | 0.16 | 1.16 | 1.47 | 1.37 | 1.47 | 1.78 | 0.39 | 1.22 | 1.59 | 1.15 | 0.28 | 0.16 | 0.32 | 1.13 | 1.50 | 0.16 | 0.34 |
| multiple_sheets | 0.06 | 1.25 | 1.84 | 0.96 | 1.68 | 2.16 | 0.51 | 1.36 | 1.87 | 1.31 | 0.34 | 0.06 | 0.37 | 1.26 | 1.82 | 0.06 | 0.36 |
Tier 1 — Formatting
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) | pyexcel (R p50 ms) | pyexcel (W p50 ms) | pylightxl (R p50 ms) | pylightxl (W p50 ms) | python-calamine (R p50 ms) | rust_xlsxwriter (W p50 ms) | tablib (R p50 ms) | tablib (W p50 ms) | wolfxl (R p50 ms) | wolfxl (W p50 ms) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| alignment | 0.09 | 1.19 | 1.45 | 0.93 | 1.34 | 1.43 | 0.25 | 1.24 | 1.26 | — | 0.32 | 0.05 | 0.36 | 1.17 | 1.25 | 0.09 | 0.34 |
| background_colors | 0.08 | 1.01 | 1.33 | 0.87 | 1.20 | 1.37 | 0.23 | 1.05 | 1.19 | 0.96 | 0.30 | 0.06 | 0.29 | 0.98 | 1.21 | 0.08 | 0.28 |
| borders | 0.36 | 1.70 | 2.62 | 1.27 | 2.09 | 1.76 | 0.24 | 1.89 | 1.47 | — | 0.49 | 0.07 | 0.47 | 1.68 | 1.40 | 0.36 | 0.46 |
| dimensions | 0.08 | 0.94 | 1.22 | 0.80 | 1.15 | 1.23 | 0.30 | 1.01 | 1.19 | 0.91 | 0.24 | 0.06 | 0.28 | 0.95 | 1.17 | 0.07 | 0.28 |
| number_formats | 0.09 | 1.03 | 1.30 | 0.87 | 1.19 | 1.42 | 0.24 | 1.10 | 1.24 | 0.98 | 0.29 | 0.06 | 0.31 | 1.01 | 1.24 | 0.08 | 0.28 |
| text_formatting | 0.15 | 1.66 | 1.73 | 1.37 | 1.83 | 1.52 | 0.28 | 1.70 | 1.34 | 1.48 | 0.43 | 0.08 | 0.40 | 1.63 | 1.37 | 0.13 | 0.38 |
Tier 2 — Advanced
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) | pyexcel (R p50 ms) | pyexcel (W p50 ms) | pylightxl (R p50 ms) | pylightxl (W p50 ms) | python-calamine (R p50 ms) | rust_xlsxwriter (W p50 ms) | tablib (R p50 ms) | tablib (W p50 ms) | wolfxl (R p50 ms) | wolfxl (W p50 ms) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| comments | 0.21 | 1.10 | 1.42 | 0.84 | 1.17 | 1.24 | 0.23 | 1.18 | 1.17 | 1.14 | 0.24 | 0.06 | 0.41 | 0.95 | 1.15 | 0.20 | 0.36 |
| conditional_formatting | 0.21 | 1.37 | 1.74 | 0.92 | 1.60 | 1.51 | 0.37 | 1.41 | 1.46 | — | 0.23 | 0.05 | 0.35 | 1.32 | 1.44 | 0.21 | 0.33 |
| data_validation | 0.15 | 1.24 | 1.30 | 0.86 | 1.57 | 1.25 | 0.44 | 1.30 | 1.17 | — | 0.24 | 0.05 | 0.26 | 1.21 | 1.15 | 0.15 | 0.27 |
| freeze_panes | 0.22 | 1.33 | 1.98 | 0.96 | 1.68 | 2.09 | 0.47 | 1.45 | 2.03 | — | 0.30 | 0.05 | 0.98 | 1.31 | 2.04 | 0.21 | 0.97 |
| hyperlinks | 0.22 | 1.16 | 1.28 | 0.88 | 1.45 | 1.21 | 0.36 | 1.27 | 1.19 | — | 0.26 | 0.05 | 0.32 | 1.16 | 1.18 | 0.22 | 0.30 |
| images | 0.05 | 1.16 | 1.69 | 0.79 | 1.11 | 1.24 | 0.23 | 1.21 | 1.18 | — | 0.22 | 0.05 | 0.29 | 0.94 | 1.15 | 0.06 | 0.27 |
| merged_cells | 0.20 | 1.23 | 1.42 | 0.87 | 1.20 | 1.42 | 0.23 | 1.29 | 1.22 | 0.99 | 0.28 | 0.06 | 0.30 | 1.01 | 1.22 | 0.18 | 0.28 |
| named_ranges | 0.05 | 1.07 | 1.42 | 0.84 | 1.37 | 1.53 | 0.43 | 1.19 | 1.44 | — | 0.25 | 0.05 | 0.33 | 1.09 | 1.42 | 0.05 | 0.31 |
| pivot_tables | 0.05 | 0.85 | 1.18 | 0.75 | 1.03 | 1.25 | 0.25 | 0.91 | 1.17 | 0.82 | 0.26 | 0.05 | 0.25 | 0.86 | 1.19 | 0.05 | 0.24 |
| tables | 0.05 | 1.39 | 1.18 | 0.86 | 1.50 | 1.24 | 0.34 | 1.74 | 1.16 | — | 0.27 | 0.06 | 0.26 | 1.25 | 1.16 | 0.06 | 0.27 |
Tier 0 — Basic Values
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) | pyexcel (R p50 ms) | pyexcel (W p50 ms) | pylightxl (R p50 ms) | pylightxl (W p50 ms) | python-calamine (R p50 ms) | rust_xlsxwriter (W p50 ms) | tablib (R p50 ms) | tablib (W p50 ms) | wolfxl (R p50 ms) | wolfxl (W p50 ms) | xlrd (R p50 ms) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| cell_values | 0.21 | 1.23 | 1.32 | 4.69 | 1.59 | 1.52 | 0.35 | 1.36 | 1.33 | 1.32 | 0.36 | 0.88 | 0.35 | 1.77 | 2.03 | 0.21 | 0.36 | — |
| formulas | 0.16 | 1.16 | 1.47 | 1.37 | 1.47 | 1.78 | 0.39 | 1.22 | 1.59 | 1.15 | 0.28 | 0.16 | 0.32 | 1.13 | 1.50 | 0.16 | 0.34 | — |
| multiple_sheets | 0.06 | 1.25 | 1.84 | 0.96 | 1.68 | 2.16 | 0.51 | 1.36 | 1.87 | 1.31 | 0.34 | 0.06 | 0.37 | 1.26 | 1.82 | 0.06 | 0.36 | — |
Tier 1 — Formatting
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) | pyexcel (R p50 ms) | pyexcel (W p50 ms) | pylightxl (R p50 ms) | pylightxl (W p50 ms) | python-calamine (R p50 ms) | rust_xlsxwriter (W p50 ms) | tablib (R p50 ms) | tablib (W p50 ms) | wolfxl (R p50 ms) | wolfxl (W p50 ms) | xlrd (R p50 ms) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| alignment | 0.09 | 1.19 | 1.45 | 0.93 | 1.34 | 1.43 | 0.25 | 1.24 | 1.26 | — | 0.32 | 0.05 | 0.36 | 1.17 | 1.25 | 0.09 | 0.34 | — |
| background_colors | 0.08 | 1.01 | 1.33 | 0.87 | 1.20 | 1.37 | 0.23 | 1.05 | 1.19 | 0.96 | 0.30 | 0.06 | 0.29 | 0.98 | 1.21 | 0.08 | 0.28 | — |
| borders | 0.36 | 1.70 | 2.62 | 1.27 | 2.09 | 1.76 | 0.24 | 1.89 | 1.47 | — | 0.49 | 0.07 | 0.47 | 1.68 | 1.40 | 0.36 | 0.46 | — |
| dimensions | 0.08 | 0.94 | 1.22 | 0.80 | 1.15 | 1.23 | 0.30 | 1.01 | 1.19 | 0.91 | 0.24 | 0.06 | 0.28 | 0.95 | 1.17 | 0.07 | 0.28 | — |
| number_formats | 0.09 | 1.03 | 1.30 | 0.87 | 1.19 | 1.42 | 0.24 | 1.10 | 1.24 | 0.98 | 0.29 | 0.06 | 0.31 | 1.01 | 1.24 | 0.08 | 0.28 | — |
| text_formatting | 0.15 | 1.66 | 1.73 | 1.37 | 1.83 | 1.52 | 0.28 | 1.70 | 1.34 | 1.48 | 0.43 | 0.08 | 0.40 | 1.63 | 1.37 | 0.13 | 0.38 | — |
Tier 2 — Advanced
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) | pyexcel (R p50 ms) | pyexcel (W p50 ms) | pylightxl (R p50 ms) | pylightxl (W p50 ms) | python-calamine (R p50 ms) | rust_xlsxwriter (W p50 ms) | tablib (R p50 ms) | tablib (W p50 ms) | wolfxl (R p50 ms) | wolfxl (W p50 ms) | xlrd (R p50 ms) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| comments | 0.21 | 1.10 | 1.42 | 0.84 | 1.17 | 1.24 | 0.23 | 1.18 | 1.17 | 1.14 | 0.24 | 0.06 | 0.41 | 0.95 | 1.15 | 0.20 | 0.36 | — |
| conditional_formatting | 0.21 | 1.37 | 1.74 | 0.92 | 1.60 | 1.51 | 0.37 | 1.41 | 1.46 | — | 0.23 | 0.05 | 0.35 | 1.32 | 1.44 | 0.21 | 0.33 | — |
| data_validation | 0.15 | 1.24 | 1.30 | 0.86 | 1.57 | 1.25 | 0.44 | 1.30 | 1.17 | — | 0.24 | 0.05 | 0.26 | 1.21 | 1.15 | 0.15 | 0.27 | — |
| freeze_panes | 0.22 | 1.33 | 1.98 | 0.96 | 1.68 | 2.09 | 0.47 | 1.45 | 2.03 | — | 0.30 | 0.05 | 0.98 | 1.31 | 2.04 | 0.21 | 0.97 | — |
| hyperlinks | 0.22 | 1.16 | 1.28 | 0.88 | 1.45 | 1.21 | 0.36 | 1.27 | 1.19 | — | 0.26 | 0.05 | 0.32 | 1.16 | 1.18 | 0.22 | 0.30 | — |
| images | 0.05 | 1.16 | 1.69 | 0.79 | 1.11 | 1.24 | 0.23 | 1.21 | 1.18 | — | 0.22 | 0.05 | 0.29 | 0.94 | 1.15 | 0.06 | 0.27 | — |
| merged_cells | 0.20 | 1.23 | 1.42 | 0.87 | 1.20 | 1.42 | 0.23 | 1.29 | 1.22 | 0.99 | 0.28 | 0.06 | 0.30 | 1.01 | 1.22 | 0.18 | 0.28 | — |
| named_ranges | 0.05 | 1.07 | 1.42 | 0.84 | 1.37 | 1.53 | 0.43 | 1.19 | 1.44 | — | 0.25 | 0.05 | 0.33 | 1.09 | 1.42 | 0.05 | 0.31 | — |
| pivot_tables | 0.05 | 0.85 | 1.18 | 0.75 | 1.03 | 1.25 | 0.25 | 0.91 | 1.17 | 0.82 | 0.26 | 0.05 | 0.25 | 0.86 | 1.19 | 0.05 | 0.24 | — |
| tables | 0.05 | 1.39 | 1.18 | 0.86 | 1.50 | 1.24 | 0.34 | 1.74 | 1.16 | — | 0.27 | 0.06 | 0.26 | 1.25 | 1.16 | 0.06 | 0.27 | — |
Tier 0 — Basic Values
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) | pyexcel (R p50 ms) | pyexcel (W p50 ms) | pylightxl (R p50 ms) | pylightxl (W p50 ms) | python-calamine (R p50 ms) | rust_xlsxwriter (W p50 ms) | tablib (R p50 ms) | tablib (W p50 ms) | wolfxl (R p50 ms) | wolfxl (W p50 ms) | xlrd (R p50 ms) | xlsxwriter (W p50 ms) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| cell_values | 0.21 | 1.23 | 1.32 | 4.69 | 1.59 | 1.52 | 0.35 | 1.36 | 1.33 | 1.32 | 0.36 | 0.88 | 0.35 | 1.77 | 2.03 | 0.21 | 0.36 | — | 1.77 |
| formulas | 0.16 | 1.16 | 1.47 | 1.37 | 1.47 | 1.78 | 0.39 | 1.22 | 1.59 | 1.15 | 0.28 | 0.16 | 0.32 | 1.13 | 1.50 | 0.16 | 0.34 | — | 1.83 |
| multiple_sheets | 0.06 | 1.25 | 1.84 | 0.96 | 1.68 | 2.16 | 0.51 | 1.36 | 1.87 | 1.31 | 0.34 | 0.06 | 0.37 | 1.26 | 1.82 | 0.06 | 0.36 | — | 2.15 |
Tier 1 — Formatting
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) | pyexcel (R p50 ms) | pyexcel (W p50 ms) | pylightxl (R p50 ms) | pylightxl (W p50 ms) | python-calamine (R p50 ms) | rust_xlsxwriter (W p50 ms) | tablib (R p50 ms) | tablib (W p50 ms) | wolfxl (R p50 ms) | wolfxl (W p50 ms) | xlrd (R p50 ms) | xlsxwriter (W p50 ms) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| alignment | 0.09 | 1.19 | 1.45 | 0.93 | 1.34 | 1.43 | 0.25 | 1.24 | 1.26 | — | 0.32 | 0.05 | 0.36 | 1.17 | 1.25 | 0.09 | 0.34 | — | 1.80 |
| background_colors | 0.08 | 1.01 | 1.33 | 0.87 | 1.20 | 1.37 | 0.23 | 1.05 | 1.19 | 0.96 | 0.30 | 0.06 | 0.29 | 0.98 | 1.21 | 0.08 | 0.28 | — | 1.93 |
| borders | 0.36 | 1.70 | 2.62 | 1.27 | 2.09 | 1.76 | 0.24 | 1.89 | 1.47 | — | 0.49 | 0.07 | 0.47 | 1.68 | 1.40 | 0.36 | 0.46 | — | 2.62 |
| dimensions | 0.08 | 0.94 | 1.22 | 0.80 | 1.15 | 1.23 | 0.30 | 1.01 | 1.19 | 0.91 | 0.24 | 0.06 | 0.28 | 0.95 | 1.17 | 0.07 | 0.28 | — | 1.52 |
| number_formats | 0.09 | 1.03 | 1.30 | 0.87 | 1.19 | 1.42 | 0.24 | 1.10 | 1.24 | 0.98 | 0.29 | 0.06 | 0.31 | 1.01 | 1.24 | 0.08 | 0.28 | — | 1.61 |
| text_formatting | 0.15 | 1.66 | 1.73 | 1.37 | 1.83 | 1.52 | 0.28 | 1.70 | 1.34 | 1.48 | 0.43 | 0.08 | 0.40 | 1.63 | 1.37 | 0.13 | 0.38 | — | 2.00 |
Tier 2 — Advanced
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) | pyexcel (R p50 ms) | pyexcel (W p50 ms) | pylightxl (R p50 ms) | pylightxl (W p50 ms) | python-calamine (R p50 ms) | rust_xlsxwriter (W p50 ms) | tablib (R p50 ms) | tablib (W p50 ms) | wolfxl (R p50 ms) | wolfxl (W p50 ms) | xlrd (R p50 ms) | xlsxwriter (W p50 ms) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| comments | 0.21 | 1.10 | 1.42 | 0.84 | 1.17 | 1.24 | 0.23 | 1.18 | 1.17 | 1.14 | 0.24 | 0.06 | 0.41 | 0.95 | 1.15 | 0.20 | 0.36 | — | 2.02 |
| conditional_formatting | 0.21 | 1.37 | 1.74 | 0.92 | 1.60 | 1.51 | 0.37 | 1.41 | 1.46 | — | 0.23 | 0.05 | 0.35 | 1.32 | 1.44 | 0.21 | 0.33 | — | 1.75 |
| data_validation | 0.15 | 1.24 | 1.30 | 0.86 | 1.57 | 1.25 | 0.44 | 1.30 | 1.17 | — | 0.24 | 0.05 | 0.26 | 1.21 | 1.15 | 0.15 | 0.27 | — | 1.55 |
| freeze_panes | 0.22 | 1.33 | 1.98 | 0.96 | 1.68 | 2.09 | 0.47 | 1.45 | 2.03 | — | 0.30 | 0.05 | 0.98 | 1.31 | 2.04 | 0.21 | 0.97 | — | 2.02 |
| hyperlinks | 0.22 | 1.16 | 1.28 | 0.88 | 1.45 | 1.21 | 0.36 | 1.27 | 1.19 | — | 0.26 | 0.05 | 0.32 | 1.16 | 1.18 | 0.22 | 0.30 | — | 1.79 |
| images | 0.05 | 1.16 | 1.69 | 0.79 | 1.11 | 1.24 | 0.23 | 1.21 | 1.18 | — | 0.22 | 0.05 | 0.29 | 0.94 | 1.15 | 0.06 | 0.27 | — | 2.47 |
| merged_cells | 0.20 | 1.23 | 1.42 | 0.87 | 1.20 | 1.42 | 0.23 | 1.29 | 1.22 | 0.99 | 0.28 | 0.06 | 0.30 | 1.01 | 1.22 | 0.18 | 0.28 | — | 1.68 |
| named_ranges | 0.05 | 1.07 | 1.42 | 0.84 | 1.37 | 1.53 | 0.43 | 1.19 | 1.44 | — | 0.25 | 0.05 | 0.33 | 1.09 | 1.42 | 0.05 | 0.31 | — | 1.67 |
| pivot_tables | 0.05 | 0.85 | 1.18 | 0.75 | 1.03 | 1.25 | 0.25 | 0.91 | 1.17 | 0.82 | 0.26 | 0.05 | 0.25 | 0.86 | 1.19 | 0.05 | 0.24 | — | 1.67 |
| tables | 0.05 | 1.39 | 1.18 | 0.86 | 1.50 | 1.24 | 0.34 | 1.74 | 1.16 | — | 0.27 | 0.06 | 0.26 | 1.25 | 1.16 | 0.06 | 0.27 | — | 1.53 |
Tier 0 — Basic Values
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) | pyexcel (R p50 ms) | pyexcel (W p50 ms) | pylightxl (R p50 ms) | pylightxl (W p50 ms) | python-calamine (R p50 ms) | rust_xlsxwriter (W p50 ms) | tablib (R p50 ms) | tablib (W p50 ms) | wolfxl (R p50 ms) | wolfxl (W p50 ms) | xlrd (R p50 ms) | xlsxwriter (W p50 ms) | xlsxwriter-constmem (W p50 ms) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| cell_values | 0.21 | 1.23 | 1.32 | 4.69 | 1.59 | 1.52 | 0.35 | 1.36 | 1.33 | 1.32 | 0.36 | 0.88 | 0.35 | 1.77 | 2.03 | 0.21 | 0.36 | — | 1.77 | 1.82 |
| formulas | 0.16 | 1.16 | 1.47 | 1.37 | 1.47 | 1.78 | 0.39 | 1.22 | 1.59 | 1.15 | 0.28 | 0.16 | 0.32 | 1.13 | 1.50 | 0.16 | 0.34 | — | 1.83 | 2.20 |
| multiple_sheets | 0.06 | 1.25 | 1.84 | 0.96 | 1.68 | 2.16 | 0.51 | 1.36 | 1.87 | 1.31 | 0.34 | 0.06 | 0.37 | 1.26 | 1.82 | 0.06 | 0.36 | — | 2.15 | 2.73 |
Tier 1 — Formatting
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) | pyexcel (R p50 ms) | pyexcel (W p50 ms) | pylightxl (R p50 ms) | pylightxl (W p50 ms) | python-calamine (R p50 ms) | rust_xlsxwriter (W p50 ms) | tablib (R p50 ms) | tablib (W p50 ms) | wolfxl (R p50 ms) | wolfxl (W p50 ms) | xlrd (R p50 ms) | xlsxwriter (W p50 ms) | xlsxwriter-constmem (W p50 ms) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| alignment | 0.09 | 1.19 | 1.45 | 0.93 | 1.34 | 1.43 | 0.25 | 1.24 | 1.26 | — | 0.32 | 0.05 | 0.36 | 1.17 | 1.25 | 0.09 | 0.34 | — | 1.80 | 1.76 |
| background_colors | 0.08 | 1.01 | 1.33 | 0.87 | 1.20 | 1.37 | 0.23 | 1.05 | 1.19 | 0.96 | 0.30 | 0.06 | 0.29 | 0.98 | 1.21 | 0.08 | 0.28 | — | 1.93 | 1.69 |
| borders | 0.36 | 1.70 | 2.62 | 1.27 | 2.09 | 1.76 | 0.24 | 1.89 | 1.47 | — | 0.49 | 0.07 | 0.47 | 1.68 | 1.40 | 0.36 | 0.46 | — | 2.62 | 2.72 |
| dimensions | 0.08 | 0.94 | 1.22 | 0.80 | 1.15 | 1.23 | 0.30 | 1.01 | 1.19 | 0.91 | 0.24 | 0.06 | 0.28 | 0.95 | 1.17 | 0.07 | 0.28 | — | 1.52 | 1.71 |
| number_formats | 0.09 | 1.03 | 1.30 | 0.87 | 1.19 | 1.42 | 0.24 | 1.10 | 1.24 | 0.98 | 0.29 | 0.06 | 0.31 | 1.01 | 1.24 | 0.08 | 0.28 | — | 1.61 | 1.72 |
| text_formatting | 0.15 | 1.66 | 1.73 | 1.37 | 1.83 | 1.52 | 0.28 | 1.70 | 1.34 | 1.48 | 0.43 | 0.08 | 0.40 | 1.63 | 1.37 | 0.13 | 0.38 | — | 2.00 | 2.11 |
Tier 2 — Advanced
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) | pyexcel (R p50 ms) | pyexcel (W p50 ms) | pylightxl (R p50 ms) | pylightxl (W p50 ms) | python-calamine (R p50 ms) | rust_xlsxwriter (W p50 ms) | tablib (R p50 ms) | tablib (W p50 ms) | wolfxl (R p50 ms) | wolfxl (W p50 ms) | xlrd (R p50 ms) | xlsxwriter (W p50 ms) | xlsxwriter-constmem (W p50 ms) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| comments | 0.21 | 1.10 | 1.42 | 0.84 | 1.17 | 1.24 | 0.23 | 1.18 | 1.17 | 1.14 | 0.24 | 0.06 | 0.41 | 0.95 | 1.15 | 0.20 | 0.36 | — | 2.02 | 1.78 |
| conditional_formatting | 0.21 | 1.37 | 1.74 | 0.92 | 1.60 | 1.51 | 0.37 | 1.41 | 1.46 | — | 0.23 | 0.05 | 0.35 | 1.32 | 1.44 | 0.21 | 0.33 | — | 1.75 | 1.87 |
| data_validation | 0.15 | 1.24 | 1.30 | 0.86 | 1.57 | 1.25 | 0.44 | 1.30 | 1.17 | — | 0.24 | 0.05 | 0.26 | 1.21 | 1.15 | 0.15 | 0.27 | — | 1.55 | 1.58 |
| freeze_panes | 0.22 | 1.33 | 1.98 | 0.96 | 1.68 | 2.09 | 0.47 | 1.45 | 2.03 | — | 0.30 | 0.05 | 0.98 | 1.31 | 2.04 | 0.21 | 0.97 | — | 2.02 | 2.41 |
| hyperlinks | 0.22 | 1.16 | 1.28 | 0.88 | 1.45 | 1.21 | 0.36 | 1.27 | 1.19 | — | 0.26 | 0.05 | 0.32 | 1.16 | 1.18 | 0.22 | 0.30 | — | 1.79 | 1.75 |
| images | 0.05 | 1.16 | 1.69 | 0.79 | 1.11 | 1.24 | 0.23 | 1.21 | 1.18 | — | 0.22 | 0.05 | 0.29 | 0.94 | 1.15 | 0.06 | 0.27 | — | 2.47 | 1.50 |
| merged_cells | 0.20 | 1.23 | 1.42 | 0.87 | 1.20 | 1.42 | 0.23 | 1.29 | 1.22 | 0.99 | 0.28 | 0.06 | 0.30 | 1.01 | 1.22 | 0.18 | 0.28 | — | 1.68 | 1.66 |
| named_ranges | 0.05 | 1.07 | 1.42 | 0.84 | 1.37 | 1.53 | 0.43 | 1.19 | 1.44 | — | 0.25 | 0.05 | 0.33 | 1.09 | 1.42 | 0.05 | 0.31 | — | 1.67 | 1.84 |
| pivot_tables | 0.05 | 0.85 | 1.18 | 0.75 | 1.03 | 1.25 | 0.25 | 0.91 | 1.17 | 0.82 | 0.26 | 0.05 | 0.25 | 0.86 | 1.19 | 0.05 | 0.24 | — | 1.67 | 1.64 |
| tables | 0.05 | 1.39 | 1.18 | 0.86 | 1.50 | 1.24 | 0.34 | 1.74 | 1.16 | — | 0.27 | 0.06 | 0.26 | 1.25 | 1.16 | 0.06 | 0.27 | — | 1.53 | 1.54 |
Tier 0 — Basic Values
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) | pyexcel (R p50 ms) | pyexcel (W p50 ms) | pylightxl (R p50 ms) | pylightxl (W p50 ms) | python-calamine (R p50 ms) | rust_xlsxwriter (W p50 ms) | tablib (R p50 ms) | tablib (W p50 ms) | wolfxl (R p50 ms) | wolfxl (W p50 ms) | xlrd (R p50 ms) | xlsxwriter (W p50 ms) | xlsxwriter-constmem (W p50 ms) | xlwt (W p50 ms) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| cell_values | 0.21 | 1.23 | 1.32 | 4.69 | 1.59 | 1.52 | 0.35 | 1.36 | 1.33 | 1.32 | 0.36 | 0.88 | 0.35 | 1.77 | 2.03 | 0.21 | 0.36 | — | 1.77 | 1.82 | 0.24 |
| formulas | 0.16 | 1.16 | 1.47 | 1.37 | 1.47 | 1.78 | 0.39 | 1.22 | 1.59 | 1.15 | 0.28 | 0.16 | 0.32 | 1.13 | 1.50 | 0.16 | 0.34 | — | 1.83 | 2.20 | 0.27 |
| multiple_sheets | 0.06 | 1.25 | 1.84 | 0.96 | 1.68 | 2.16 | 0.51 | 1.36 | 1.87 | 1.31 | 0.34 | 0.06 | 0.37 | 1.26 | 1.82 | 0.06 | 0.36 | — | 2.15 | 2.73 | 0.17 |
Tier 1 — Formatting
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) | pyexcel (R p50 ms) | pyexcel (W p50 ms) | pylightxl (R p50 ms) | pylightxl (W p50 ms) | python-calamine (R p50 ms) | rust_xlsxwriter (W p50 ms) | tablib (R p50 ms) | tablib (W p50 ms) | wolfxl (R p50 ms) | wolfxl (W p50 ms) | xlrd (R p50 ms) | xlsxwriter (W p50 ms) | xlsxwriter-constmem (W p50 ms) | xlwt (W p50 ms) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| alignment | 0.09 | 1.19 | 1.45 | 0.93 | 1.34 | 1.43 | 0.25 | 1.24 | 1.26 | — | 0.32 | 0.05 | 0.36 | 1.17 | 1.25 | 0.09 | 0.34 | — | 1.80 | 1.76 | 0.24 |
| background_colors | 0.08 | 1.01 | 1.33 | 0.87 | 1.20 | 1.37 | 0.23 | 1.05 | 1.19 | 0.96 | 0.30 | 0.06 | 0.29 | 0.98 | 1.21 | 0.08 | 0.28 | — | 1.93 | 1.69 | 0.19 |
| borders | 0.36 | 1.70 | 2.62 | 1.27 | 2.09 | 1.76 | 0.24 | 1.89 | 1.47 | — | 0.49 | 0.07 | 0.47 | 1.68 | 1.40 | 0.36 | 0.46 | — | 2.62 | 2.72 | 0.45 |
| dimensions | 0.08 | 0.94 | 1.22 | 0.80 | 1.15 | 1.23 | 0.30 | 1.01 | 1.19 | 0.91 | 0.24 | 0.06 | 0.28 | 0.95 | 1.17 | 0.07 | 0.28 | — | 1.52 | 1.71 | 0.13 |
| number_formats | 0.09 | 1.03 | 1.30 | 0.87 | 1.19 | 1.42 | 0.24 | 1.10 | 1.24 | 0.98 | 0.29 | 0.06 | 0.31 | 1.01 | 1.24 | 0.08 | 0.28 | — | 1.61 | 1.72 | 0.19 |
| text_formatting | 0.15 | 1.66 | 1.73 | 1.37 | 1.83 | 1.52 | 0.28 | 1.70 | 1.34 | 1.48 | 0.43 | 0.08 | 0.40 | 1.63 | 1.37 | 0.13 | 0.38 | — | 2.00 | 2.11 | 0.33 |
Tier 2 — Advanced
| Feature | calamine-styled (R p50 ms) | openpyxl (R p50 ms) | openpyxl (W p50 ms) | openpyxl-readonly (R p50 ms) | pandas (R p50 ms) | pandas (W p50 ms) | polars (R p50 ms) | pyexcel (R p50 ms) | pyexcel (W p50 ms) | pylightxl (R p50 ms) | pylightxl (W p50 ms) | python-calamine (R p50 ms) | rust_xlsxwriter (W p50 ms) | tablib (R p50 ms) | tablib (W p50 ms) | wolfxl (R p50 ms) | wolfxl (W p50 ms) | xlrd (R p50 ms) | xlsxwriter (W p50 ms) | xlsxwriter-constmem (W p50 ms) | xlwt (W p50 ms) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| comments | 0.21 | 1.10 | 1.42 | 0.84 | 1.17 | 1.24 | 0.23 | 1.18 | 1.17 | 1.14 | 0.24 | 0.06 | 0.41 | 0.95 | 1.15 | 0.20 | 0.36 | — | 2.02 | 1.78 | 0.12 |
| conditional_formatting | 0.21 | 1.37 | 1.74 | 0.92 | 1.60 | 1.51 | 0.37 | 1.41 | 1.46 | — | 0.23 | 0.05 | 0.35 | 1.32 | 1.44 | 0.21 | 0.33 | — | 1.75 | 1.87 | 0.15 |
| data_validation | 0.15 | 1.24 | 1.30 | 0.86 | 1.57 | 1.25 | 0.44 | 1.30 | 1.17 | — | 0.24 | 0.05 | 0.26 | 1.21 | 1.15 | 0.15 | 0.27 | — | 1.55 | 1.58 | 0.13 |
| freeze_panes | 0.22 | 1.33 | 1.98 | 0.96 | 1.68 | 2.09 | 0.47 | 1.45 | 2.03 | — | 0.30 | 0.05 | 0.98 | 1.31 | 2.04 | 0.21 | 0.97 | — | 2.02 | 2.41 | 0.18 |
| hyperlinks | 0.22 | 1.16 | 1.28 | 0.88 | 1.45 | 1.21 | 0.36 | 1.27 | 1.19 | — | 0.26 | 0.05 | 0.32 | 1.16 | 1.18 | 0.22 | 0.30 | — | 1.79 | 1.75 | 0.12 |
| images | 0.05 | 1.16 | 1.69 | 0.79 | 1.11 | 1.24 | 0.23 | 1.21 | 1.18 | — | 0.22 | 0.05 | 0.29 | 0.94 | 1.15 | 0.06 | 0.27 | — | 2.47 | 1.50 | 0.12 |
| merged_cells | 0.20 | 1.23 | 1.42 | 0.87 | 1.20 | 1.42 | 0.23 | 1.29 | 1.22 | 0.99 | 0.28 | 0.06 | 0.30 | 1.01 | 1.22 | 0.18 | 0.28 | — | 1.68 | 1.66 | 0.19 |
| named_ranges | 0.05 | 1.07 | 1.42 | 0.84 | 1.37 | 1.53 | 0.43 | 1.19 | 1.44 | — | 0.25 | 0.05 | 0.33 | 1.09 | 1.42 | 0.05 | 0.31 | — | 1.67 | 1.84 | 0.14 |
| pivot_tables | 0.05 | 0.85 | 1.18 | 0.75 | 1.03 | 1.25 | 0.25 | 0.91 | 1.17 | 0.82 | 0.26 | 0.05 | 0.25 | 0.86 | 1.19 | 0.05 | 0.24 | — | 1.67 | 1.64 | 0.12 |
| tables | 0.05 | 1.39 | 1.18 | 0.86 | 1.50 | 1.24 | 0.34 | 1.74 | 1.16 | — | 0.27 | 0.06 | 0.26 | 1.25 | 1.16 | 0.06 | 0.27 | — | 1.53 | 1.54 | 0.13 |
- alignment / calamine-styled: Write unsupported
- alignment / openpyxl-readonly: Write unsupported
- alignment / polars: Write unsupported
- alignment / pylightxl: Read failed: TypeError: expected string or bytes-like object, got 'NoneType'
- alignment / python-calamine: Write unsupported
- alignment / rust_xlsxwriter: Read unsupported
- alignment / xlrd: Write unsupported; Read not applicable: xlrd does not support .xlsx input
- alignment / xlsxwriter-constmem: Read unsupported
- alignment / xlsxwriter: Read unsupported
- alignment / xlwt: Read unsupported
- background_colors / calamine-styled: Write unsupported
- background_colors / openpyxl-readonly: Write unsupported
- background_colors / polars: Write unsupported
- background_colors / python-calamine: Write unsupported
- background_colors / rust_xlsxwriter: Read unsupported
- background_colors / xlrd: Write unsupported; Read not applicable: xlrd does not support .xlsx input
- background_colors / xlsxwriter-constmem: Read unsupported
- background_colors / xlsxwriter: Read unsupported
- background_colors / xlwt: Read unsupported
- borders / calamine-styled: Write unsupported
- borders / openpyxl-readonly: Write unsupported
- borders / polars: Write unsupported
- borders / pylightxl: Read failed: TypeError: expected string or bytes-like object, got 'NoneType'
- borders / python-calamine: Write unsupported
- borders / rust_xlsxwriter: Read unsupported
- borders / xlrd: Write unsupported; Read not applicable: xlrd does not support .xlsx input
- borders / xlsxwriter-constmem: Read unsupported
- borders / xlsxwriter: Read unsupported
- borders / xlwt: Read unsupported
- cell_values / calamine-styled: Write unsupported
- cell_values / openpyxl-readonly: Write unsupported
- cell_values / polars: Write unsupported
- cell_values / python-calamine: Write unsupported
- cell_values / rust_xlsxwriter: Read unsupported
- cell_values / xlrd: Write unsupported; Read not applicable: xlrd does not support .xlsx input
- cell_values / xlsxwriter-constmem: Read unsupported
- cell_values / xlsxwriter: Read unsupported
- cell_values / xlwt: Read unsupported
- comments / calamine-styled: Write unsupported
- comments / openpyxl-readonly: Write unsupported
- comments / polars: Write unsupported
- comments / python-calamine: Write unsupported
- comments / rust_xlsxwriter: Read unsupported
- comments / xlrd: Write unsupported; Read not applicable: xlrd does not support .xlsx input
- comments / xlsxwriter-constmem: Read unsupported
- comments / xlsxwriter: Read unsupported
- comments / xlwt: Read unsupported
- conditional_formatting / calamine-styled: Write unsupported
- conditional_formatting / openpyxl-readonly: Write unsupported
- conditional_formatting / polars: Write unsupported
- conditional_formatting / pylightxl: Read failed: TypeError: expected string or bytes-like object, got 'NoneType'
- conditional_formatting / python-calamine: Write unsupported
- conditional_formatting / rust_xlsxwriter: Read unsupported
- conditional_formatting / xlrd: Write unsupported; Read not applicable: xlrd does not support .xlsx input
- conditional_formatting / xlsxwriter-constmem: Read unsupported
- conditional_formatting / xlsxwriter: Read unsupported
- conditional_formatting / xlwt: Read unsupported
- data_validation / calamine-styled: Write unsupported
- data_validation / openpyxl-readonly: Write unsupported
- data_validation / polars: Write unsupported
- data_validation / pylightxl: Read failed: TypeError: expected string or bytes-like object, got 'NoneType'
- data_validation / python-calamine: Write unsupported
- data_validation / rust_xlsxwriter: Read unsupported
- data_validation / xlrd: Write unsupported; Read not applicable: xlrd does not support .xlsx input
- data_validation / xlsxwriter-constmem: Read unsupported
- data_validation / xlsxwriter: Read unsupported
- data_validation / xlwt: Read unsupported
- dimensions / calamine-styled: Write unsupported
- dimensions / openpyxl-readonly: Write unsupported
- dimensions / polars: Write unsupported
- dimensions / python-calamine: Write unsupported
- dimensions / rust_xlsxwriter: Read unsupported
- dimensions / xlrd: Write unsupported; Read not applicable: xlrd does not support .xlsx input
- dimensions / xlsxwriter-constmem: Read unsupported
- dimensions / xlsxwriter: Read unsupported
- dimensions / xlwt: Read unsupported
- formulas / calamine-styled: Write unsupported
- formulas / openpyxl-readonly: Write unsupported
- formulas / polars: Write unsupported
- formulas / python-calamine: Write unsupported
- formulas / rust_xlsxwriter: Read unsupported
- formulas / xlrd: Write unsupported; Read not applicable: xlrd does not support .xlsx input
- formulas / xlsxwriter-constmem: Read unsupported
- formulas / xlsxwriter: Read unsupported
- formulas / xlwt: Read unsupported
- freeze_panes / calamine-styled: Write unsupported
- freeze_panes / openpyxl-readonly: Write unsupported
- freeze_panes / polars: Write unsupported
- freeze_panes / pylightxl: Read failed: TypeError: expected string or bytes-like object, got 'NoneType'
- freeze_panes / python-calamine: Write unsupported
- freeze_panes / rust_xlsxwriter: Read unsupported
- freeze_panes / xlrd: Write unsupported; Read not applicable: xlrd does not support .xlsx input
- freeze_panes / xlsxwriter-constmem: Read unsupported
- freeze_panes / xlsxwriter: Read unsupported
- freeze_panes / xlwt: Read unsupported
- hyperlinks / calamine-styled: Write unsupported
- hyperlinks / openpyxl-readonly: Write unsupported
- hyperlinks / polars: Write unsupported
- hyperlinks / pylightxl: Read failed: TypeError: expected string or bytes-like object, got 'NoneType'
- hyperlinks / python-calamine: Write unsupported
- hyperlinks / rust_xlsxwriter: Read unsupported
- hyperlinks / xlrd: Write unsupported; Read not applicable: xlrd does not support .xlsx input
- hyperlinks / xlsxwriter-constmem: Read unsupported
- hyperlinks / xlsxwriter: Read unsupported
- hyperlinks / xlwt: Read unsupported
- images / calamine-styled: Write unsupported
- images / openpyxl-readonly: Write unsupported
- images / polars: Write unsupported
- images / pylightxl: Read failed: TypeError: expected string or bytes-like object, got 'NoneType'
- images / python-calamine: Write unsupported
- images / rust_xlsxwriter: Read unsupported
- images / xlrd: Write unsupported; Read not applicable: xlrd does not support .xlsx input
- images / xlsxwriter-constmem: Read unsupported
- images / xlsxwriter: Read unsupported
- images / xlwt: Read unsupported
- merged_cells / calamine-styled: Write unsupported
- merged_cells / openpyxl-readonly: Write unsupported
- merged_cells / polars: Write unsupported
- merged_cells / python-calamine: Write unsupported
- merged_cells / rust_xlsxwriter: Read unsupported
- merged_cells / xlrd: Write unsupported; Read not applicable: xlrd does not support .xlsx input
- merged_cells / xlsxwriter-constmem: Read unsupported
- merged_cells / xlsxwriter: Read unsupported
- merged_cells / xlwt: Read unsupported
- multiple_sheets / calamine-styled: Write unsupported
- multiple_sheets / openpyxl-readonly: Write unsupported
- multiple_sheets / polars: Write unsupported
- multiple_sheets / python-calamine: Write unsupported
- multiple_sheets / rust_xlsxwriter: Read unsupported
- multiple_sheets / xlrd: Write unsupported; Read not applicable: xlrd does not support .xlsx input
- multiple_sheets / xlsxwriter-constmem: Read unsupported
- multiple_sheets / xlsxwriter: Read unsupported
- multiple_sheets / xlwt: Read unsupported
- named_ranges / calamine-styled: Write unsupported
- named_ranges / openpyxl-readonly: Write unsupported
- named_ranges / polars: Write unsupported
- named_ranges / pylightxl: Read failed: TypeError: expected string or bytes-like object, got 'NoneType'
- named_ranges / python-calamine: Write unsupported
- named_ranges / rust_xlsxwriter: Read unsupported
- named_ranges / xlrd: Write unsupported; Read not applicable: xlrd does not support .xlsx input
- named_ranges / xlsxwriter-constmem: Read unsupported
- named_ranges / xlsxwriter: Read unsupported
- named_ranges / xlwt: Read unsupported
- number_formats / calamine-styled: Write unsupported
- number_formats / openpyxl-readonly: Write unsupported
- number_formats / polars: Write unsupported
- number_formats / python-calamine: Write unsupported
- number_formats / rust_xlsxwriter: Read unsupported
- number_formats / xlrd: Write unsupported; Read not applicable: xlrd does not support .xlsx input
- number_formats / xlsxwriter-constmem: Read unsupported
- number_formats / xlsxwriter: Read unsupported
- number_formats / xlwt: Read unsupported
- pivot_tables / calamine-styled: Write unsupported
- pivot_tables / openpyxl-readonly: Write unsupported
- pivot_tables / polars: Write unsupported
- pivot_tables / python-calamine: Write unsupported
- pivot_tables / rust_xlsxwriter: Read unsupported
- pivot_tables / xlrd: Write unsupported; Read not applicable: xlrd does not support .xlsx input
- pivot_tables / xlsxwriter-constmem: Read unsupported
- pivot_tables / xlsxwriter: Read unsupported
- pivot_tables / xlwt: Read unsupported
- tables / calamine-styled: Write unsupported
- tables / openpyxl-readonly: Write unsupported
- tables / polars: Write unsupported
- tables / pylightxl: Read failed: TypeError: expected string or bytes-like object, got 'NoneType'
- tables / python-calamine: Write unsupported
- tables / rust_xlsxwriter: Read unsupported
- tables / xlrd: Write unsupported; Read not applicable: xlrd does not support .xlsx input
- tables / xlsxwriter-constmem: Read unsupported
- tables / xlsxwriter: Read unsupported
- tables / xlwt: Read unsupported
- text_formatting / calamine-styled: Write unsupported
- text_formatting / openpyxl-readonly: Write unsupported
- text_formatting / polars: Write unsupported
- text_formatting / python-calamine: Write unsupported
- text_formatting / rust_xlsxwriter: Read unsupported
- text_formatting / xlrd: Write unsupported; Read not applicable: xlrd does not support .xlsx input
- text_formatting / xlsxwriter-constmem: Read unsupported
- text_formatting / xlsxwriter: Read unsupported
- text_formatting / xlwt: Read unsupported