XLSX API
XLSX APIs are called through the app returned by widget.render():
const { widget } = await OfficeSdk.openfile({ docId: "demo-xlsx", fileName: "demo.xlsx", file });
const app = await widget.mount("#office-container").render();
Components
| Component | Description |
|---|---|
Document | Export, zoom, editing state, and loading events |
Workbook | Worksheets, palette, number formats, and protection state |
Worksheet | Rows, columns, freeze panes, row height, and column width |
Selection | Current selection content, font, borders, fill, alignment, and number format |
Finder | Search, previous/next result, and search status |
Cursor | Current mouse/cursor target area |
UndoRedo | Undo, redo, and availability state |
Quick Example
app.Document.setZoom(125);
app.Selection.setBold(true);
app.Selection.setFillColor({ r: 255, g: 242, b: 204 });
await app.Worksheet.insertRows();
app.Finder.search("revenue");
app.Finder.selectNext();
Event example:
function onSelectionChange(info) {
console.log(info);
}
app.Selection.addEventListener("SELECTION_CHANGE", onSelectionChange);
Document
| Method | Signature | Returns | Description |
|---|---|---|---|
isEditing | (): boolean | boolean | Whether a cell is currently being edited. |
setZoom | (value: number, redraw?: boolean): boolean | boolean | Sets zoom percentage. redraw defaults to true; returns the underlying zoom operation result. |
getZoom | (): number | number | Gets zoom percentage. |
focusEditor | (): void | void | Currently a no-op in the XLSX implementation. |
updateVisibleArea | (): void | void | Redraws the visible area of the current active worksheet. |
exportDocument | (): Promise<void> | Promise<void> | Exports the original workbook. |
exportPdf | (printOptions?: unknown): Promise<void> | Promise<void> | Exports PDF with print options. |
copy | (): Promise<void> | Promise<void> | Copies the current selection. |
cut | (): Promise<void> | Promise<void> | Cuts the current selection. |
paste | (): Promise<void> | Promise<void> | Pastes into the current selection. |
startReadOnly | (): void | void | Enters read-only state. |
endReadOnly | (): void | void | Exits read-only state. |
isReadOnly | (): boolean | boolean | Gets the current read-only state. |
Example:
if (!app.Document.isEditing()) {
app.Document.setZoom(110);
}
await app.Document.exportDocument();
await app.Document.exportPdf();
Document component events:
| Event Name | Payload | Description |
|---|---|---|
XLSX_WORKSHEET_LOADED | None | Worksheet loaded. |
XLSX_END_LOADING | None | Document loading completed. |
DOCUMENT_EXPORT_READY | None | Export completed. |
DOCUMENT_EDITING_ENABLED | None | The document entered editable state. |
DOCUMENT_EDITING_DISABLED | None | The document exited editable state. |
XLSX_EDITING_STATUS_CHANGE | (status: boolean) | Cell editing state changed. |
XLSX_ZOOM_CHANGE | None | Zoom changed. |
XLSX_WORKSHEET_LOADING_RATIO | (ratio: number) | Worksheet loading progress. |
XLSX_FIRST_PART_LOADING | None | First batch content loaded. |
XLSX_WORKSHEET_CHANGE | ({ sheetProtected?: boolean }) | Current worksheet changed. |
exportPdf(...) requires a secure context (normally HTTPS or localhost), window.queryLocalFonts, and permission to access local fonts. If these requirements are not met, the current implementation does not perform the PDF export.
Workbook
| Method | Signature | Returns | Description |
|---|---|---|---|
addWorksheet | (): void | void | Adds a worksheet. |
setWorksheetName | (name: string, index?: number): boolean | number | boolean | number | Sets worksheet name. If index is omitted, the active worksheet is used. Returns success or a name-validation status code. |
deleteWorksheet | (index?: number): void | void | Deletes a worksheet. If index is omitted, the active worksheet is deleted. |
getWorksheetName | (index?: number): string | string | Gets worksheet name. If index is omitted, the active worksheet is read. |
getColorPalette | (): { theme: unknown[]; standard: unknown[] } | { theme; standard } | Gets the color palette. |
getCellNumberFormats | (): string[] | string[] | Gets number format category list. |
getNumberFormatExample | (format: string, value?: unknown, lcid?: unknown): unknown | unknown | Gets a number format example. |
getNumberFormatExamples | (formats: string[], value?: unknown, lcid?: unknown): unknown | unknown | Gets number format examples in batch. |
isWorksheetProtected | (index?: number): boolean | boolean | Checks whether a worksheet is protected. If index is omitted, the active worksheet is checked. |
Example:
app.Workbook.addWorksheet();
app.Workbook.setWorksheetName("Summary");
const name = app.Workbook.getWorksheetName();
const protectedSheet = app.Workbook.isWorksheetProtected();
const formats = app.Workbook.getCellNumberFormats();
const examples = app.Workbook.getNumberFormatExamples(["0.00", "0%"], 1234.56, "en-US");
Worksheet
| Method | Signature | Returns | Description |
|---|---|---|---|
isFrozenPane | (): boolean | boolean | Whether panes are currently frozen. |
toggleFreezePanes | (): void | void | Toggles freeze/unfreeze panes. |
setRowHeight | (heightPt: number): Promise<unknown> | Promise<unknown> | Sets current row height. Empty values are ignored. |
insertRows | (): Promise<unknown> | Promise<unknown> | Inserts rows. |
hideRows | (): Promise<unknown> | Promise<unknown> | Hides rows. |
unhideRows | (): Promise<unknown> | Promise<unknown> | Unhides rows. |
deleteRows | (): Promise<unknown> | Promise<unknown> | Deletes rows. |
insertColumns | (): Promise<unknown> | Promise<unknown> | Inserts columns. |
setColumnWidth | (nChars: number): void | void | Sets current column width in character width units. Empty values are ignored. |
hideColumns | (): Promise<unknown> | Promise<unknown> | Hides columns. |
unhideColumns | (): Promise<unknown> | Promise<unknown> | Unhides columns. |
deleteColumns | (): Promise<unknown> | Promise<unknown> | Deletes columns. |
getRowHeight | (row?: number | null, wsIdx?: number | null): number | number | Gets row height. If omitted or null, the current context is used. |
getColumnWidth | (col?: number | null, wsIdx?: number | null): number | number | Gets column width. If omitted or null, the current context is used. |
Example:
if (!app.Worksheet.isFrozenPane()) {
app.Worksheet.toggleFreezePanes();
}
await app.Worksheet.setRowHeight(24);
app.Worksheet.setColumnWidth(12);
const rowHeight = app.Worksheet.getRowHeight();
const colWidth = app.Worksheet.getColumnWidth();
Selection
Selection methods operate on the current active cell or selection.
| Method | Signature | Returns | Description |
|---|---|---|---|
clearContents | (): void | void | Clears content in the current selection. |
setAccountingFormat | (value: AccountingFormat): Promise<unknown> | false | Promise<unknown> | false | Sets accounting format. Returns false for invalid format values. |
setUnderline | (value: string): void | void | Sets underline. |
setBorder | (value: BorderValue): void | void | Sets borders. |
setStrikeThrough | (value: boolean): void | void | Sets strikethrough. |
setBold | (value: boolean): void | void | Sets bold. |
setItalic | (value: boolean): void | void | Sets italic. |
setFontSize | (value: string | number): void | void | Sets font size. Must satisfy 0 < value <= 409. |
setHorizontalAlignment | (value: string): void | void | Sets horizontal alignment. |
setVerticalAlignment | (value: string | number): void | void | Sets vertical alignment. Prefer string values. |
setFontColor | (value: XlsxColor): void | void | Sets font color. |
setFillColor | (value: XlsxColor): void | void | Sets fill color. |
setFontName | (value: string): void | void | Sets font family. |
setCellStyle | (value: string): Promise<unknown> | Promise<unknown> | Sets cell style. |
setPercentFormat | (): Promise<unknown> | Promise<unknown> | Sets percent format. |
setNumberFormat | (value: unknown): Promise<unknown> | Promise<unknown> | Sets number format. |
increaseDecimalPlaces | (): void | void | Increases decimal places. |
decreaseDecimalPlaces | (): void | void | Decreases decimal places. |
type AccountingFormat = "RMB" | "Dollar" | "EUR" | "GBP" | "JPY" | "none";
type XlsxColor =
| { r: number; g: number; b: number }
| { theme: number; tint?: number }
| { indexed: number }
| { rgbHex: string };
type BorderValue = {
color: XlsxColor;
position: string;
style: string;
};
rgbHex supports 6-digit RRGGBB or 8-digit AARRGGBB. The 8-digit form can carry alpha; the { r, g, b } RGB object itself does not support transparency.
While cell text is being edited, setBold, setItalic, setUnderline, and setStrikeThrough toggle the current state and ignore the supplied boolean value. setHorizontalAlignment and setVerticalAlignment currently have no effect in that editing state.
Common enums:
| Parameter | Common Values |
|---|---|
setUnderline(value) | "single", "none" |
setHorizontalAlignment(value) | "left", "center", "right", "justify", "distributed" |
setVerticalAlignment(value) | "top", "center", "bottom", "justify", "distributed"; runtime numeric values are accepted for compatibility |
setAccountingFormat(value) | "RMB", "Dollar", "EUR", "GBP", "JPY", "none" |
BorderValue.position | "all", "none", "inner", "outer", "left", "right", "top", "bottom", "verticalInner", "horizontalInner", "diagonalUp", "diagonalDown" |
BorderValue.style | "hair", "dotted", "dashed", "thin", "medium", "thick", "double", "dashDot", "dashDotDot", "mediumDashed", "mediumDashDot", "mediumDashDotDot", "slantDashDot"; when clearing borders, use position: "none" |
Example:
app.Selection.clearContents();
app.Selection.setFontName("Arial");
app.Selection.setFontSize(12);
app.Selection.setBold(true);
await app.Selection.setAccountingFormat("RMB");
app.Selection.setFontColor({ r: 192, g: 0, b: 0 });
app.Selection.setFillColor({ r: 255, g: 242, b: 204 });
app.Selection.setBorder({
color: { r: 0, g: 0, b: 0 },
position: "all",
style: "thin"
});
await app.Selection.setNumberFormat("0.00");
app.Selection.increaseDecimalPlaces();
Selection component events:
| Event Name | Payload |
|---|---|
SELECTION_CHANGE | XlsxSelectionChange or the raw event object |
type XlsxSelectionChange = {
bold: boolean;
italic: boolean;
fontName: string;
fontSize: number | string;
fontColor: unknown;
underline: string;
strikeout: boolean;
fillColor: unknown;
alignHorizontal: string;
alignVertical: string;
numFormat: string;
numFormatType: string;
canCopy?: boolean;
bSelectAll?: boolean;
isText?: boolean;
};
Finder
| Method | Signature | Returns | Description |
|---|---|---|---|
search | (text: string, callback?: (...args: unknown[]) => void): void | void | Starts searching for a keyword. Optional callback supported. |
selectFirst | (): void | void | Moves to the first search result. |
selectNext | (): void | void | Moves to the next search result. |
selectPrevious | (): void | void | Moves to the previous search result. |
getSearchStatus | (): unknown | unknown | Gets search status. |
Finder component events:
| Event Name | Payload | Description |
|---|---|---|
XLSX_OPEN_FIND_UI | None | The document requests opening the find UI. |
Example:
app.Finder.search("Q1");
app.Finder.selectFirst();
app.Finder.selectNext();
console.log(app.Finder.getSearchStatus());
Cursor
| Method | Signature | Returns | Description |
|---|---|---|---|
getTargetType | (): "" | "columnHeader" | "rowHeader" | "cells" | "navBar" | string | Gets the current mouse/cursor target area. |
Return values:
| Value | Description |
|---|---|
"" | No stable target currently. |
"cells" | Cell area. |
"rowHeader" | Row header. |
"columnHeader" | Column header. |
"navBar" | Bottom worksheet tab area. |
Example:
const targetType = app.Cursor.getTargetType();
if (targetType === "cells") {
app.Selection.setBold(true);
}
UndoRedo
| Method | Signature | Returns | Description |
|---|---|---|---|
undo | (callback?: (value: unknown) => void): void | void | Undo. Optional callback supported. |
redo | (callback?: (value: unknown) => void): void | void | Redo. Optional callback supported. |
canUndo | (): boolean | boolean | Whether undo is available. |
canRedo | (): boolean | boolean | Whether redo is available. |
UndoRedo component events:
| Event Name | Payload |
|---|---|
UNDO_REDO_STATE_CHANGE | None |
Example:
if (app.UndoRedo.canRedo()) {
app.UndoRedo.redo();
}