folone/poi.scala
65.0
Adequate · 20 September 2026
2.5k
lines of production code
Scala
primary language
1
measurement over time
What this system is
Poi Scala is a functional Scala library that provides type-safe, immutable abstractions for manipulating Excel workbooks using Apache POI. It supports synchronous and asynchronous operations with streaming capabilities, and offers integrations with the Cats and Scalaz ecosystems for pure functional programming. The system focuses on performance and memory efficiency through comprehensive benchmarking and reactive stream support.
Features
Add Cats integration for functional effects and typeclass instances
This release introduces a new \poi-scala-cats\ module that integrates the Apache POI library with the Cats ecosystem. It provides \IOOperations\ for wrapping workbook creation, saving, loading, and data processing in \cats.effect.IO\ for pure functional asynchronous programming. Additionally, it supplies Cats typeclass instances (\Eq\, \Show\, \Order\, \Semigroup\, and \Monoid\) for core POI data structures like \Cell\, \Row\, \Sheet\, and \Workbook\, enabling functional composition and law-based testing of these entities.
poi-scala-cats · high confidence
Asynchronous Excel operations with streaming and progress callbacks
The poi-scala-async module now provides non-blocking Excel file operations via the AsyncOperations object. Users can create, save, and load workbooks asynchronously, process large datasets through streaming with batch support, and build workbooks progressively with configurable progress callbacks. The module also includes reactive stream support with backpressure handling for efficient memory usage during large data processing.
poi-scala-async · high confidence
Introduce core domain model and data validation for Excel workbooks
The \poi-scala-core\ library now includes a comprehensive set of new source files defining the core domain model for Excel manipulation. This adds immutable case classes for \Cell\ types (String, Numeric, Date, Boolean, Blank, Error, Formula, and Styled), \Row\, \Sheet\, and \Workbook\, along with supporting types like \CellAddr\, \CellStyle\, and \CellRange\. It also introduces a new data validation subsystem with a fluent \DataValidationBuilder\, constraint types, and helper methods for dropdowns and ranges, as well as named range management and bulk operation utilities. These changes provide the foundational API for creating and styling Excel files, replacing or augmenting previous internal implementations with a more structured, type-safe approach.
poi-scala-core, poi-scala-scalaz · high confidence
Project initialization with modular structure and tooling
The repository has been initialized with a complete project structure for the Poi Scala library, including a modular build system (core, cats, scalaz, async), a comprehensive Makefile for development workflows, and configuration files for code formatting (scalafmt), linting (scalastyle), and static analysis (scalafix). The setup also includes a custom sbt launcher, Replit environment configuration, and an Apache 2.0 license file, establishing the foundation for building and testing the Excel manipulation library.
(repo-wide) · high confidence
Removals
Removal of legacy HSSF workbook implementation
The legacy \Workbook\ class and its associated \Sheet\, \Row\, and \Cell\ data structures, which were tightly coupled to the Apache POI HSSF API for writing \.xls\ files, have been removed from the codebase. This deletion eliminates the previous implementation that manually mapped internal data structures to HSSF objects for file output.
src/main · high confidence
Test coverage
Added JMH benchmarks for async and comprehensive workbook operations; Removed obsolete PoiSpec test file.
Dependencies
Migrate build system from Maven to sbt and update dependencies
The project has switched its build tool from Maven (pom.xml) to sbt (build.sbt), introducing a multi-module structure with core, scalaz, cats, async, and benchmark modules. This migration updates the Apache POI dependency from version 3.7 to 5.5.1, upgrades the Scala library to support versions 2.12.21, 2.13.18, and 3.9.0, and updates testing libraries including specs2-scalacheck to 4.23.0 and scalacheck to 1.20.0.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 65.
Lenses
- Code Health 98
- Architecture 100
- Maturity 63
- Readiness 70
- Security 56
Changes since last survey
- 300 commits — 289 feature/other, 11 fixes
By area
- (root) — 146 commits
- project/build.properties — 55 commits
- .github/workflows — 36 commits
- project/plugins.sbt — 30 commits
- project/project — 10 commits
- src/test — 6 commits
- benchmarks/src — 5 commits
- (repo) — 4 commits
- src/main — 4 commits
- poi-scala-core/src — 2 commits
- .github/CODEOWNERS — 1 commit
- poi-scala-cats/src — 1 commit
Notable commits
- fix: Fix 2.13 compilation errors.
- fix: Fix benchmark upload path
- fix: Fix scala 3 test compilation
- fix: Fix the tests in scala 3
- fix: Fix up benchmark download
- fix: Fix up benchmark results
- fix: Hopefully final fix
- fix: Revert "Update sbt, scripted-plugin to 1.11.0" (#314)
- fix: Revert "Update sbt-ci-release to 1.11.0" (#313)
- fix: Try to fix the comment publishing workflow
- fix: fix credentials setting
- change: .
- change: .
- change: Add 'Reformat with scalafmt 3.8.2' to .git-blame-ignore-revs
- change: Add @xuwei-k to developers.
- change: Add back release on branch push
- change: Add telemetry
- change: Another quickfix
- change: Bump actions/checkout from 3 to 4
- change: Bump actions/checkout from 4 to 5 (#347)
- …and 280 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
folone/poi.scala was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 20 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 1b8e4a5349e1bcb4ac01f2309d60211f2e1b4489 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-b51f968c9b10.