Conversation
Phase 1 — Safe internal fixes: - FExcelExporter: remove dead I/O when target file exists; throw directly - FOdsImporter: replace undeclared commons-io transitive dep with is.bytes - SpreadsheetImporter: make validateNotNull private - ValueExtractor: add @CompileStatic - FExcelImporter + FOdsImporter: improve missing-sheet error messages - SpreadsheetImporter: fix @param mismatches (file → url) and add class-level GroovyDoc - SpreadsheetWriter: document writeSheets(Map) parameter keys - FExcelExporter: fix stale GroovyDoc claiming append support Phase 2 — API consistency: - Importer + SpreadsheetImporter: standardise startColumn/endColumn → startCol/endCol - fastods/Sheet: tighten name field from Object to String Phase 3 — Usability improvements: - SpreadsheetImporter: add File-based overloads delegating via absolutePath - SpreadsheetImporter: add whole-sheet convenience imports with auto-detected dimensions - SpreadsheetImporter: remove misleading 'Sheet1' default from String sheet overloads Phase 4 — Refactoring: - FileUtil: replace generic Exception throws with SpreadsheetImportException Phase 5 — Documentation: - Investigate and document why FExcelExporter cannot use @CompileStatic (fastexcel internal GenericStyleSetter is package-private) - README: update versions (groovy 5.0.5, matrix-core 3.7.1, spreadsheet 2.4.0), remove stale Log4j claim, add compatibility matrix row, fix Sheet1 docs - release.md: add v2.4.0 release notes - build.gradle + bom.xml: remove SNAPSHOT suffix
- Fix misplaced class-level GroovyDoc in SpreadsheetImporter (move before @CompileStatic) - Add tests for new File-based and auto-detect convenience overloads - Remove matrix-tablesaw entries from matrix-spreadsheet release.md - Add one-liner GroovyDoc to File-based delegation overloads - Roadmap file: main has v2.4.0-roadmap.md at module root; PR moves it to req/ subdirectory. No merge conflict since git tracks the move correctly.
Restore Sheet1 default, add File+sheetName auto-detect overload, fix misplaced GroovyDoc, align exception types in FOdsImporter, use string interpolation in FileUtil, update roadmap checkboxes, and add 7 new tests for coverage gaps. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove unreachable null checks in FOdsImporter (OdsStreamDataReader already throws FastOdsException before returning null) - Remove default from sheetNumber in auto-detect overloads to prevent ambiguous dispatch; add explicit no-arg convenience methods instead - Document differing exception types for missing sheets (XLSX vs ODS) - Quote file paths in FileUtil error messages for readability - Rename test to reflect actual exception type (FastOdsException) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements the full v2.4.0 roadmap for matrix-spreadsheet.
Summary
124 tests passing, Spotless clean, JaCoCo coverage gate met.
Changes by phase
Phase 1 — Safe internal fixes
is.bytesvalidateNotNullprivate; fix@param file→@param urlmismatches in URL overloads; add class-level GroovyDoc with usage example@CompileStaticwriteSheets(Map)parameter keysPhase 2 — API consistency
startColumn/endColumn→startCol/endColnamefield type fromObjecttoStringPhase 3 — Usability improvements
File-based overloads delegating viaabsolutePathfindLastRow/findLastCol)'Sheet1'default fromString sheetoverloadsPhase 4 — Refactoring
Exceptionthrows withSpreadsheetImportExceptionPhase 5 — Documentation
@CompileStaticcannot be enabled (fastexcel internalGenericStyleSetteris package-private)Test commands run
Modules touched