Releases: chitralabs/sheetz
Releases · chitralabs/sheetz
v1.0.2
What's Changed
Bug Fixes
- Fix Windows file locking in StreamingReader —
close()now joins the parser thread before returning, ensuring file handles are fully released
Dependency Upgrades
- OpenCSV 5.9 → 5.12.0
- AssertJ 3.24.2 → 3.27.7
- SLF4J 2.0.9 → 2.0.17
- maven-gpg-plugin 3.1.0 → 3.2.8
- maven-javadoc-plugin 3.6.3 → 3.12.0
- maven-surefire-plugin 3.2.2 → 3.5.4
- maven-jar-plugin 3.3.0 → 3.5.0
- maven-source-plugin 3.3.0 → 3.4.0
- maven-compiler-plugin 3.11.0 → 3.15.0
CI Improvements
- Moved OWASP dependency-check to weekly security scan for faster CI (~3 min vs ~20 min)
- Upgraded GitHub Actions (checkout v6, setup-java v5, upload-artifact v6, codecov v5)
Maven
<dependency>
<groupId>io.github.chitralabs.sheetz</groupId>
<artifactId>sheetz-core</artifactId>
<version>1.0.2</version>
</dependency>Full Changelog: v1.0.1...v1.0.2
Sheetz v1.0.1 — Initial Stable Release
Sheetz v1.0.1 — Initial Release
We're excited to release the first stable version of Sheetz — a lightweight Java library
that lets you read, write, and stream Excel (.xlsx/.xls) and CSV files with a single line of code.
What's New
One-Liner API
// Read any Excel or CSV file into typed Java objects
List<Product> products = Sheetz.read("data.xlsx", Product.class);
// Write back in one line
Sheetz.write(products, "output.xlsx");Key Features
- Zero boilerplate — no Workbook, Sheet, Row, or Cell objects to manage
- True SAX streaming — process million-row files with constant ~10MB memory
- 19 built-in type converters — LocalDate, BigDecimal, Enum, UUID, Boolean, and more
- Annotation-based mapping —
@Columnfor headers, required fields, defaults, custom formats - Built-in validation — per-row error reporting with column names and row numbers
- Thread-safe — safe for concurrent use in multi-threaded applications
- Multi-format — XLSX, XLS (legacy), and CSV from one unified API
Performance vs Apache POI (100K rows)
| Operation | Sheetz | Apache POI | Improvement |
|---|---|---|---|
| Write | 423ms | 2,453ms | 5.8x faster |
| Memory | ~10MB | ~340MB | 34x less memory |
| Lines of code | 1 | 45+ | 45x less code |
Maven
<dependency>
<groupId>io.github.chitralabs.sheetz</groupId>
<artifactId>sheetz-core</artifactId>
<version>1.0.1</version>
</dependency>Resources
Contributors
Thanks to everyone who tested and provided feedback during development.
If Sheetz saved you time, please give us a star — it helps other Java developers find this project.
v1.0.0 — Initial Release
Sheetz v1.0.0 — Initial Release
The first public release of Sheetz, a high-performance Excel and CSV processing library for Java.
Highlights
- One-liner API —
Sheetz.read(),Sheetz.write(),Sheetz.stream(),Sheetz.validate() - Three formats — XLSX (Excel 2007+), XLS (Excel 97-2003), and CSV with auto-detection
- Annotation mapping —
@Columnwith custom headers, required fields, defaults, date formats, custom converters, ignore, and column width - 19 built-in type converters — Primitives, BigDecimal, BigInteger, LocalDate, LocalDateTime, LocalTime, Instant, ZonedDateTime, UUID, Enum, and more
- True streaming — SAX-based XLSX parsing with constant ~10MB memory for million-row files
- Batch processing —
stream().batch(1000).forEach(batch -> db.bulkInsert(batch)) - Built-in validation — Per-row error reporting with row number, column name, value, and root cause
- Fluent builders —
ReaderBuilderandWriterBuilderfor sheet selection, header row, auto-sizing, freeze panes - Multi-sheet workbooks —
Sheetz.workbook().sheet("A", listA).sheet("B", listB).write("report.xlsx") - Thread-safe — Global configuration in AtomicReference, safe for concurrent use
- Fuzzy column matching — 3-tier resolution (exact → case-insensitive → normalized) so
productNamematchesProduct Name - XXE protection — Secure XML parsing with external entities disabled
- Java Module System (JPMS) support
Installation
<dependency>
<groupId>io.github.chitralabs.sheetz</groupId>
<artifactId>sheetz-core</artifactId>
<version>1.0.0</version>
</dependency>Full changelog: https://github.com/chitralabs/sheetz/blob/main/CHANGELOG.md