You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -227,6 +227,8 @@ Dynamic schemas are the union of row keys in first-seen order. Missing values ar
227
227
228
228
New worksheets freeze the first physical row by default for MiniExcel v1 compatibility. Configure physical row and column counts with `with_freeze_row_count()` and `with_freeze_column_count()`; set both to `0` to disable frozen panes.
229
229
230
+
AutoFilter dropdowns cover the complete written range by default, including header-only exports. Use `with_auto_filter(false)` to disable them. When headers are disabled, Excel treats the first data row as the filter-header row.
231
+
230
232
Create multiple worksheets in input order with `MiniExcel::save_as_sheets()`. It returns one data-row count per worksheet:
Copy file name to clipboardExpand all lines: docs/compatibility.md
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -48,6 +48,7 @@ The latest `calamine 0.36` and `rust_xlsxwriter 0.97` require Rust 1.88. The MVP
48
48
| Multi-sheet export |`save_as_sheets()` / `save_as_serialized_sheets()`| Preserves input sheet order and returns data-row counts |
49
49
|`overwriteFile`|`WriteOptions::with_overwrite_file()`| Defaults to `false`; existing paths require explicit opt-in |
50
50
|`FreezeRowCount` / `FreezeColumnCount`|`WriteOptions::with_freeze_row_count()` / `with_freeze_column_count()`| Defaults to one frozen row and zero frozen columns |
51
+
|`AutoFilter`|`WriteOptions::with_auto_filter()`| Defaults to `true`; covers the complete written range |
51
52
| Basic template fill |`save_as_template()` / `save_as_template_bytes()`| Scalar placeholders and single-row array expansion; preserves package parts |
52
53
53
54
`MiniExcel` is the only public behavior entry point. Reader, writer, parser, and concrete iterator types are crate-internal. Public supporting types are limited to row/cell values, structured provenance rows, options, errors/results, and Serde date/time helpers.
@@ -116,7 +117,7 @@ Rust integration tests reuse the repository's existing files under `tests/data/x
116
117
- Forced shared-string disk spill, indexed lookup, invalid-directory handling, memory-only byte queries, and early-drop cleanup.
117
118
- Structured formula text, cached values, A1 addresses, style IDs, built-in/custom number formats, ranges, and early iterator drop.
118
119
119
-
Writer tests generate temporary workbooks through `MiniExcel::save_as*()` and read them back through `MiniExcel::query*()`, covering dynamic and typed values, dates, multiple worksheets, row counts, empty schemas, default/custom/disabled freeze panes, explicit path overwrite behavior, and worksheet-name validation. Template tests cover scalar and mixed text, native numbers and booleans, XML escaping, formula-injection protection, missing-variable policy, empty and populated arrays, multiple sheets, style retention, path overwrite, and byte workflows. The WASM adapter has native unit tests, while Browser Lab Playwright tests cover generated-workbook rendering, query controls, inclusive end ranges, and desktop/mobile viewports.
120
+
Writer tests generate temporary workbooks through `MiniExcel::save_as*()` and read them back through `MiniExcel::query*()`, covering dynamic and typed values, dates, multiple worksheets, row counts, empty schemas, default/custom/disabled freeze panes, header/headerless/typed AutoFilter ranges, explicit path overwrite behavior, and worksheet-name validation. Template tests cover scalar and mixed text, native numbers and booleans, XML escaping, formula-injection protection, missing-variable policy, empty and populated arrays, multiple sheets, style retention, path overwrite, and byte workflows. The WASM adapter has native unit tests, while Browser Lab Playwright tests cover generated-workbook rendering, query controls, inclusive end ranges, and desktop/mobile viewports.
| Attribute-based mapping | Partial | Column index/name attributes, localized headers, width/hidden/formula metadata, custom dynamic formatters, field mapping, and dynamic column ordering/filtering. Serde covers rename, alias, defaults, skips, options, and custom serializers, but not these Excel-specific contracts. |
43
43
| Read configuration | Partial | Culture-aware conversion, buffer/fast modes, and some null/empty-string behavior. Merged-cell filling and shared-string disk caching are implemented. |
44
-
| Write configuration and style | Partial | Tables/autofilters, right-to-left sheets, auto width, header style/alignment/wrapping, shared versus inline strings, and broader cell styling. Rust exposes sheet name, header output, frozen rows/columns, and number formats. |
44
+
| Write configuration and style | Partial | Tables, right-to-left sheets, auto width, header style/alignment/wrapping, shared versus inline strings, and broader cell styling. Rust exposes sheet name, header output, AutoFilter, frozen rows/columns, and number formats. |
45
45
| Sheet metadata/workflow | Partial | Table metadata, comment metadata, dynamic sheet aliases, class-level sheet selection, and traversing all sheets through one reader. Rust already covers names, order, dimensions, visibility, and active state. |
46
46
| Provider/package model | Different by design | .NET composes OpenXML, CSV, templating, and fluent-mapping providers. Rust has a single XLSX crate plus CLI and WASM adapters; those adapters do not replace the missing provider capabilities. |
0 commit comments