/** * Parse / serialize SpreadsheetML worksheet part (`CT_Worksheet` / `sheetData`). * * Citations: * - `CT_Worksheet`, `CT_SheetData`, `CT_Row`, `CT_Cell`, `ST_CellType`: * `specs/schemas/xsd/OfficeOpenXML-XMLSchema-Transitional/sml.xsd` * - docs/specs/worksheet-cells.md * - docs/specs/conditional-formatting.md (`conditionalFormatting` after mergeCells / * phoneticPr, before dataValidations) * - docs/specs/data-validations.md (`dataValidations` after CF, before hyperlinks) * - docs/specs/hyperlinks.md (`hyperlinks` after dataValidations, before printOptions) * - docs/specs/freeze-panes.md (`sheetViews` before sheetData) * - docs/specs/column-properties.md (`cols` after sheetFormatPr, before sheetData) * - docs/specs/standard-height.md (`sheetFormatPr` after sheetViews, before cols) * - docs/specs/page-setup.md (`printOptions` / `pageMargins` / `pageSetup` after hyperlinks) * - docs/specs/text-boxes.md (`drawing` after smartTags, before legacyDrawing) * * Unsupported top-level children are preserved opaquely in before/after bags. * When the caller owns the drawing model, bag copies of `drawing` are stripped * and a modeled `` is inserted. * * @private */ import { OpcRelationship } from '../core/package/relationships'; import { CellModel } from '../cell/cell-model'; import { ConditionalFormattingModel } from './conditional-formatting'; import { DataValidationsModel } from './data-validations'; import { ColumnsModel } from './columns'; import { RowsModel } from './rows'; import { SheetViewsModel } from './freeze-panes'; import { SheetFormatPrModel } from './sheet-format'; import { SortStateModel } from './sort-state'; import { AutoFilterModel } from './auto-filter'; import { HyperlinksModel } from './hyperlinks'; import { TablePartsModel } from './table-model'; import { MergeCellEntry } from './merged-cells'; import { PageSetupModel } from './page-setup'; import { SheetProtectionModel } from './sheet-protection'; import { ProtectedRangesModel } from './protected-ranges'; /** Default ceiling for cells materialized from sheetData. */ export declare const DEFAULT_MAX_SHEET_CELLS = 5000000; /** * Parsed worksheet part focused on sheetData + dimension + mergeCells + * conditionalFormatting + dataValidations + hyperlinks + sheetViews + cols + * page setup. */ export interface WorksheetXmlModel { /** Sparse cells keyed later by host; ordered list from file. */ readonly cells: ReadonlyArray; /** Sparse row records, including rows with no cells. */ readonly rows: RowsModel; /** `dimension/@ref` when present. */ readonly dimensionRef: string | undefined; /** * Ordered non-modeled top-level children excluding sheetData, dimension, * modeled `sheetViews`, modeled `cols`, modeled `mergeCells`, modeled * `conditionalFormatting`, modeled `dataValidations`, modeled `hyperlinks`, * and modeled print trio elements, each full element XML. Relative order * among preserves is kept; modeled elements are re-inserted by the * serializer at standard positions. */ readonly beforeSheetDataXml: ReadonlyArray; readonly afterSheetDataXml: ReadonlyArray; /** Extra root attributes excluding xmlns / xmlns:r. */ readonly rootExtraAttrsXml: string; /** Whether a dimension element was present. */ readonly hadDimension: boolean; /** * Parsed `mergeCells` / `mergeCell@ref` entries in file order. * Empty when absent or all refs soft-skipped. */ readonly mergeCells: ReadonlyArray; /** * Parsed conditional-formatting rules from all `conditionalFormatting` * parents (file order). Empty when absent or all soft-skipped. */ readonly conditionalFormatting: ConditionalFormattingModel; /** * Parsed `dataValidations` model. Empty entries when absent or all soft-skipped. */ readonly dataValidations: DataValidationsModel; /** * Parsed `hyperlinks` model. Empty entries when absent or all soft-skipped. * External targets are resolved when sheet relationships are supplied. */ readonly hyperlinks: HyperlinksModel; /** * Parsed `sheetViews` model (freeze/split panes). * `present: false` when the element was absent. */ readonly sheetViews: SheetViewsModel; /** * Parsed `sheetFormatPr` model (sheet default row height). * `present: false` when the element was absent. */ readonly sheetFormatPr: SheetFormatPrModel; /** * Parsed `cols` / `col` column records. Empty when absent or all soft-skipped. */ readonly cols: ColumnsModel; /** * Parsed print/page setup trio (`printOptions` / `pageMargins` / `pageSetup`). * `present: false` when none of the three elements were present. */ readonly pageSetup: PageSetupModel; /** * Parsed `tableParts` refs (`CT_TableParts`). Empty when absent or all * soft-skipped; table parts themselves are resolved lazily by the host. */ readonly tableParts: TablePartsModel; /** * Parsed worksheet-level `sortState` model. `present: false` when the * element was absent, or when its root was unparsable (whole-element * backup then round-trips via `xml`). */ readonly sortState: SortStateModel; /** * Parsed worksheet-level `autoFilter` model. `present: false` when the * element was absent, or when its root was unparsable (whole-element * backup then round-trips via `xml`). Table-embedded autoFilter stays * opaque on the table part owner. */ readonly autoFilter: AutoFilterModel; /** * Parsed `sheetProtection` model. `present: false` when the element was * absent. CT_Worksheet order: after `sheetCalcPr`, before `protectedRanges`. */ readonly sheetProtection: SheetProtectionModel; /** * Parsed `protectedRanges` model. Empty entries when absent or all * soft-skipped. CT_Worksheet order: after `sheetProtection`, before * `scenarios` / `autoFilter`. */ readonly protectedRanges: ProtectedRangesModel; } /** * Parse worksheet part bytes into a sparse cell list + preserve bags. * * @param sheetRels Optional sheet-part relationships used to resolve * hyperlink `r:id` targets on load. */ export declare function parseWorksheetXml(bytes: Uint8Array, partName: string, options?: { readonly maxCells?: number; readonly sheetRels?: ReadonlyArray; }): WorksheetXmlModel; /** * Serialize a worksheet model to SpreadsheetML worksheet part bytes. * Modeled elements (`sheetViews`, `cols`, `mergeCells`, `conditionalFormatting`, * `dataValidations`, `hyperlinks`, the print trio) are inserted at CT_Worksheet * sequence positions. Unsupported children (including `drawing`) are emitted * from preserve bags as-is. */ export declare function serializeWorksheetXml(model: { readonly cells: ReadonlyArray; readonly rows?: RowsModel; readonly beforeSheetDataXml?: ReadonlyArray; readonly afterSheetDataXml?: ReadonlyArray; readonly rootExtraAttrsXml?: string; /** Modeled merge ranges; omitted from output when empty/absent. */ readonly mergeCells?: ReadonlyArray; /** Modeled conditional formatting; omitted from output when empty/absent. */ readonly conditionalFormatting?: ConditionalFormattingModel; /** Modeled data validations; omitted from output when empty/absent. */ readonly dataValidations?: DataValidationsModel; /** Modeled hyperlinks; omitted from output when empty/absent. */ readonly hyperlinks?: HyperlinksModel; /** Modeled sheetViews / freeze panes; omitted when absent/empty. */ readonly sheetViews?: SheetViewsModel; /** Modeled sheetFormatPr / default row height; omitted when present is false. */ readonly sheetFormatPr?: SheetFormatPrModel; /** Modeled `cols` / column widths; omitted when empty/absent. */ readonly cols?: ColumnsModel; /** Modeled print/page setup trio; omitted when absent. */ readonly pageSetup?: PageSetupModel; /** Modeled tableParts refs; omitted from output when empty/absent. */ readonly tableParts?: TablePartsModel; /** * Modeled worksheet-level `sortState`; omitted from output when absent * (no backup) — an unparsable root still re-emits its whole-element * backup verbatim. */ readonly sortState?: SortStateModel; /** * Modeled worksheet-level `autoFilter`; omitted from output when absent * (no backup) — an unparsable root still re-emits its whole-element * backup verbatim. Schema order: autoFilter immediately before sortState. */ readonly autoFilter?: AutoFilterModel; /** * Modeled `sheetProtection`; omitted when `present: false`. * Schema order: after sheetCalcPr, before protectedRanges. */ readonly sheetProtection?: SheetProtectionModel; /** * Modeled `protectedRanges`; omitted when entries are empty. * Schema order: after sheetProtection, before scenarios/autoFilter. */ readonly protectedRanges?: ProtectedRangesModel; /** * Sheet drawing relationship id for modeled ``. * When set (or `stripBagDrawing` is true), opaque bag `drawing` elements * are filtered out so the library-owned element is sole. */ readonly drawingRelationshipId?: string; /** * Strip bag `drawing` even when no relationship id is emitted (empty owned * drawing after last text box removed). */ readonly stripBagDrawing?: boolean; /** * Sheet VML legacyDrawing relationship id for modeled * `` (form controls). When set (or * `stripBagLegacyDrawing` is true), opaque bag `legacyDrawing` elements * are filtered out so the library-owned element is sole. */ readonly legacyDrawingRelationshipId?: string; /** * Strip bag `legacyDrawing` even when no relationship id is emitted * (empty owned VML after last form control removed). */ readonly stripBagLegacyDrawing?: boolean; /** Force dimension emission even when empty (omit by default). */ readonly emitEmptyDimension?: boolean; }): Uint8Array; /** * Minimal bounding A1 range for existing cells, or undefined if empty. */ export declare function computeDimensionRef(cells: ReadonlyArray): string | undefined;