Pluggable table import backend. Parses raw .xlsx bytes into the same
ColumnarData shape fromCsv returns, so host ingestion code can stay
format-agnostic.
(data: ArrayBuffer | Uint8Array, options?: XlsxWorkbookOptions): Promise<ColumnarData>(data:ArrayBuffer|Uint8Array, options?:XlsxWorkbookOptions):Promise<ColumnarData>(data:ArrayBuffer|Uint8Array, options?:XlsxWorkbookOptions):Promise<ColumnarData>Parse the first sheet of .xlsx bytes into ColumnarData. The first parsed row is treated as the header and its cell text becomes each column's key. Numbers stay numbers, date cells use the date-serial convention, strings are verbatim, and empty cells become null. @example import { registerXlsxBackends } from "@sheetwrite/xlsx"; import { fromXlsxTable } from "@sheetwrite/core"; registerXlsxBackends(); async function openTable(file: File) { return fromXlsxTable(await file.arrayBuffer()); } @see toXlsxTableAPI reference →interface XlsxWorkbookOptions {
signal?: AbortSignal;
maxCells?: number;
resourceLimits?: Partial<Omit<XlsxResourceLimits, "maxCells">>;
onWarning?: (warning: XlsxWorkbookWarning) => void;
}interfaceXlsxWorkbookOptions {signal?:AbortSignal;maxCells?:number;resourceLimits?:Partial<Omit<XlsxResourceLimits, "maxCells">>;onWarning?: (warning:XlsxWorkbookWarning) =>void;}interfaceXlsxWorkbookOptions {signal?:AbortSignal;maxCells?:number;resourceLimits?:Partial<Omit<XlsxResourceLimits,"maxCells">>;onWarning?: (warning:XlsxWorkbookWarning,) =>void;}Shared options passed to every registered table and workbook XLSX backend.API reference →interface ColumnarData {
rowCount: number;
columns: Record<string, ArrayLike<CellScalar | CellValue>>;
}interfaceColumnarData {rowCount:number;columns:Record<string, ArrayLike<CellScalar|CellValue>>;}interfaceColumnarData {rowCount:number;columns:Record<string,ArrayLike<CellScalar|CellValue>>;}Eager column-oriented values used to initialize a sheet.API reference →