Skip to content

Reader API ​

Use the reader classes when you want convenient, read-only access to a normalized workbook without manually indexing into plain objects.

WorkbookReader ​

WorkbookReader wraps a workbook and provides sheet lookup helpers.

js
import { WorkbookReader } from "tablsx";

const reader = WorkbookReader.fromBuffer(bytes);

console.log(reader.sheetNames);
console.log(reader.sheetCount);

const summary = reader.sheet("Summary");
const firstSheet = reader.sheet(0);

Use WorkbookReader when you want:

  • sheet(name) or sheet(index) access
  • sheetNames and sheetCount
  • a thin read-oriented wrapper over parsed data

If you only need the raw normalized model, readXlsx() is the simpler choice.

SheetReader ​

SheetReader wraps one worksheet and provides convenience accessors for rows, cells, raw values, and row-object conversion.

js
import { WorkbookReader } from "tablsx";

const reader = WorkbookReader.fromBuffer(bytes);
const sheet = reader.sheet("Users");

console.log(sheet.name);
console.log(sheet.rowCount);
console.log(sheet.columnCount);

const headerRow = sheet.getRow(0);
const firstNameCell = sheet.getCell(1, 0);
const values = sheet.toValues();

Converting a sheet to row objects ​

Use toObjects() when the first row is a header row and you want plain objects back.

js
import { WorkbookReader } from "tablsx";

const sheet = WorkbookReader.fromBuffer(bytes).sheet("Users");

const rows = sheet.toObjects();

You can also provide explicit headers or column type overrides:

js
import { CellType, WorkbookReader } from "tablsx";

const sheet = WorkbookReader.fromBuffer(bytes).sheet("Embeddings");

const rows = sheet.toObjects({
  columns: {
    embedding: { type: CellType.VECTOR },
    created_at: { type: CellType.DATE },
  },
});

When to use readers instead of plain functions ​

Use readXlsx() directly when:

  • you want the smallest API surface
  • your code already works well with plain workbook objects
  • you only need one or two direct property reads

Use WorkbookReader and SheetReader when:

  • you want name-based sheet access
  • you expect repeated row and cell lookups
  • you want toValues() or toObjects() helpers close to the sheet
  • you want a more guided read path for application code

Relationship to the normalized model ​

Readers do not replace the normalized workbook shape. They wrap it.

This means you can move between both styles freely:

js
import { WorkbookReader, readXlsx } from "tablsx";

const workbook = readXlsx(bytes);
const reader = WorkbookReader.fromWorkbook(workbook);

const users = reader.sheet("Users").toObjects();

If your application eventually needs the plain workbook object for storage, diffing, or testing, readers do not get in the way.

Built for predictable XLSX data interchange.