| XLSX sheets use the workbook's names in tab order, with dates and booleans readable | Covered by a test | superdocuments/tests/office_real.rs (xlsx_uses_workbook_names_tab_order_dates_and_booleans); fixture tests/fixtures/office/basic.xlsx | Ran 2026-11-08, passing. The openpyxl fixture's tab order is Costs then Revenue; a date, a float and booleans in it read as 2026-11-07, 1234.5, TRUE and FALSE, matching the values openpyxl reads back. |
| A LibreOffice-written XLSX reads the same | Covered by a test | superdocuments/tests/office_real.rs (libreoffice_written_xlsx_and_pptx_read_the_same_content); fixture tests/fixtures/office/lo.xlsx | Ran 2026-11-08, passing. Written by LibreOffice from basic.ods. |
| Serial dates follow Excel, including the 1900 leap-year offset and the 1904 epoch | Covered by a test | superdocuments/src/ooxml/xlsx.rs (serial_dates_match_excel) | Ran 2026-11-08, passing: 1 is 1900-01-01, 61 is 1900-03-01, 45000 is 2023-03-15, and 0 in the 1904 system is 1904-01-01. |
| Date number formats are told apart from numeric ones | Covered by a test | superdocuments/src/ooxml/xlsx.rs (date_formats_are_told_from_number_formats, style_sheet_marks_date_cells) | Ran 2026-11-08, passing: yyyy-mm-dd, d-mmm-yy and [h]:mm are dates; 0.00, 0.0% and quoted 'd' are not. |
| Inline, rich-text, error, boolean and uncalculated-formula cells; phonetic guides left out | Covered by a test | superdocuments/src/ooxml/xlsx.rs (cell_kinds, shared_strings_are_rich_text_without_phonetic_guides) | Ran 2026-11-08, passing. |
| A column past XFD is appended to the row rather than overwriting column A, and a sheet that asks for too many cells is refused | Covered by a test | superdocuments/src/ooxml/xlsx.rs (columns_past_xfd_and_huge_gaps_are_not_misplaced_or_unbounded) | Ran 2026-11-08, passing. This replaces the earlier note that the streaming path overwrote column A: the streaming path no longer exists. |
| convert_streaming and the cache use the same XLSX reader as convert_bytes | Read from the code | superdocuments/src/document.rs (convert_streaming fallback arm; DocFormat::is_streaming) | write_xlsx_streaming, lift_xlsx and render_xlsx were deleted. |
| Shared strings are read from xl/sharedStrings.xml; a missing part gives an empty table | Read from the code | superdocuments/src/document.rs:390-416, 483-486; superdocuments/src/xlsx.rs:64-90, 159-162 | shared_strings() collects the text of every t inside each si element. |
| ODS repeat counts apply only to self-closing cells | Read from the code | superdocuments/src/document.rs:577-584, 629-634 | number-columns-repeated is read only in the Empty arm, and the count is capped at 16,384 by odf_repeat. A repeated cell that has content is emitted once. |
| XLSB sheet names come from workbook.bin record 156, matched to sheets by position | Read from the code | superdocuments/src/document.rs:745-754, 839-842 | names.get(number - 1), falling back to 'Sheet N'. |
| webfold reads legacy XLS through calamine::Xls and renders cells with calamine's Display | Read from the code | webfold/src/document.rs:170-190; webfold/Cargo.toml:94-98, 221 | calamine is an optional dependency enabled by the default native feature. Data::Empty writes nothing. Merge data is not used. |
| No webfold test names XLS | Covered by a test | webfold/tests/ (search for xls) and webfold/src/document.rs | A search found no XLS test in tests/ or in any unit test in src/document.rs. The superdocuments test for an XLSB sheet uses an empty sheet part (document.rs:2065-2066). |
| webfold's CSV renderer keeps line breaks as <br> and escapes pipes, and does not pad sparse tables | Covered by a test | webfold/tests/document_review.rs:18-31, 49-59; webfold/src/document/table.rs:4-23, 43-49, 56-71 | Named tests multiline_cells_are_single_markdown_cells, lone_cr_is_a_record_boundary_and_limits_delimiter_detection and ragged_rows_do_not_expand_to_a_cartesian_grid. Not run. |
| On 45 public mixed-format fixtures, webfold's median conversion time is about 27.7 microseconds when warm and in process | Measured | /benchmarks/documents/ ; webfold-bench/bench/results/document-rust-cold-hot-2026-09-24.json | Uncached, mixed formats; spreadsheets are not reported separately, so this is not an XLSX figure. From a fresh process the median is 2.77 ms. Measured with the older readers; the new ones have not been benchmarked. |
| A numeric ODS cell with a value attribute and display text is read once, not twice, in the superdocuments revision Webfold pins | Covered by a test | superdocuments/src/document.rs, test ods_cell_with_a_value_attribute_and_display_text_is_not_doubled | Run on 2026-11-07: failed before the change with '| 4242 | Name | 7.57.50 |' and passes after it; the library suite is 375 passed, 0 failed, 1 ignored. The test is in the superdocuments revision Webfold pins (68c216f). |