Package io.keikai.axyra.sheets


package io.keikai.axyra.sheets
Public Java API for the Axyra Sheets engine.

Entry points: Workbook, Sheet, Cell.

All classes in this package are part of the public API and follow SemVer compatibility guarantees. Anything under io.keikai.axyra.sheets.internal is implementation detail and may change at any time.

Naming conventions

The API uses record-style accessors, not JavaBean getX():

  • Property read: the bare property name — sheet.name(), font.bold(). Stored boolean properties are bare too (style.bold(), validation.allowBlank()).
  • Derived predicates and state queries use isX() / hasX() — color.isRgb(), sheet.isProtected(), sheet.isRowHidden(int). The distinction: bare names mirror a stored field; isX answers a question that is computed or takes arguments.
  • Mutation: void setX(...) — setters do not chain.
  • Coordinates are 0-based, always ordered (row, col). A1-style references go through A1.
  • Collections are returned as java.util.List snapshots; mutating the returned list does not affect the workbook.

Thread safety

Every method is safe to invoke from any thread: each native call is serialized by a process-wide engine lock, so concurrent use cannot corrupt state. The flip side in this release: calls do not execute in parallel, including across different Workbook instances — a long-running export on one workbook delays calls on others. Compound read-modify-write sequences are not atomic; callers that need atomicity across multiple calls must synchronize externally. Do not invoke API methods from inside a user-function callback registered via Workbook.registerFunction while a recalculation is in progress.

Exceptions