Skip to content

matrix-spreadsheet v2.4.0#304

Merged
perNyfelt merged 4 commits intomainfrom
spreadsheet-2.4.0
May 6, 2026
Merged

matrix-spreadsheet v2.4.0#304
perNyfelt merged 4 commits intomainfrom
spreadsheet-2.4.0

Conversation

@perNyfelt
Copy link
Copy Markdown
Member

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

  • FExcelExporter: remove dead I/O when target file exists; throw directly instead of opening a ReadableWorkbook for nothing
  • FOdsImporter: replace undeclared commons-io transitive dependency with Groovy native is.bytes
  • SpreadsheetImporter: make validateNotNull private; fix @param file@param url mismatches in URL overloads; add class-level GroovyDoc with usage example
  • ValueExtractor: add @CompileStatic
  • FExcelImporter + FOdsImporter: improve missing-sheet error messages (names the missing sheet instead of generic NoSuchElementException)
  • SpreadsheetWriter: document writeSheets(Map) parameter keys
  • FExcelExporter: fix stale GroovyDoc claiming append support

Phase 2 — API consistency

  • Importer + SpreadsheetImporter + FExcelImporter: standardise startColumn/endColumnstartCol/endCol
  • fastods/Sheet: tighten name field type 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 (findLastRow/findLastCol)
  • SpreadsheetImporter: remove misleading 'Sheet1' default from String sheet overloads

Phase 4 — Refactoring

  • FileUtil: replace generic Exception throws with SpreadsheetImportException

Phase 5 — Documentation

  • FExcelExporter: investigate and document why @CompileStatic cannot be enabled (fastexcel internal GenericStyleSetter is package-private)
  • README.md: 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

Test commands run

./gradlew :matrix-spreadsheet:test :matrix-spreadsheet:spotlessCheck :matrix-spreadsheet:jacocoTestCoverageVerification

Modules touched

  • matrix-spreadsheet
  • matrix-bom

per and others added 4 commits May 5, 2026 22:44
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>
@perNyfelt perNyfelt merged commit 7ae2dc9 into main May 6, 2026
@perNyfelt perNyfelt deleted the spreadsheet-2.4.0 branch May 6, 2026 08:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant