Core API Details
Last updated: 2026-02-26
📦 安装与初始化
使用 npm 安装
npm install sheetnext
<!-- 放置编辑器的容器 -->
<div id="SNContainer" style="width:100vw;height:100vh;padding:0 7px 7px"></div>
import SheetNext from 'sheetnext';
import 'sheetnext.css';
const SN = new SheetNext(document.querySelector('#SNContainer'));
浏览器直接引入(UMD)
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SheetNext Demo</title>
<link rel="stylesheet" href="dist/sheetnext.css">
</head>
<body>
<div id="SNContainer" style="width:100vw;height:100vh;padding:0 7px 7px"></div>
<script src="dist/sheetnext.umd.js"></script>
<script>
const SN = new SheetNext(document.querySelector('#SNContainer'));
</script>
</body>
</html>
📐 类型约定(开发约束)
本节作为 API 细节文档统一前置约束,调用前建议先阅读。
坐标与区域(0-based)
字段含义:r = row(行),c = column(列),s = start(起始),e = end(结束)
| 类型 | 说明 | 示例 |
|---|---|---|
| CellNum | 单元格数字坐标 | {r: 0, c: 0} |
| CellStr | 单元格字符串地址 | "A1"、"B2" |
| CellRef | `CellNum | CellStr` |
| RangeNum | 区域数字坐标 | {s:{r:0,c:0}, e:{r:2,c:2}} |
| RangeStr | 区域字符串地址 | "A1:C3"、"A:B"、"1:2" |
| RangeRef | `RangeNum | RangeStr` |
r = 0表示第 1 行,c = 0表示第 A 列。
样式对象 Style
font:name | size | color | bold | italic | underline | strikefill:type | pattern | fgColoralignment:horizontal | vertical | wrapText | textRotation | indentborder:left | right | top | bottom(每个方向含style与color)numFmt: 数字格式字符串(如#,##0.00、yyyy-mm-dd、0.00%)protection:locked | hidden
参数约束
- 优先使用文档声明类型,避免传入未定义字段。
- 涉及区域参数时,优先保证起始/结束坐标合法且边界有序。
- 涉及样式写入时,建议最小变更(仅传需要改动的字段)。
AI/AI.js
AI
- AI 助手模块 - Tool Calling 架构
Methods
chatInput(con)
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| con | - | Yes | - | - |
clearChat()
async conversation(p, joinChat = true)
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| p | - | Yes | - | - |
| joinChat | boolean | No | true | - |
handleFileChange(event)
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| event | - | Yes | - | - |
Events (via SN.Event)
| Event | Timing | Notes |
|---|---|---|
beforeAIRequest |
Before request is sent | Async hook, supports e.cancel(reason) |
aiRequestStart |
Request started | Includes request metadata |
aiRequestChunk |
Streaming chunk received | Fired for each parsed SSE chunk |
afterAIRequest |
Request succeeded | Async hook with final result |
aiRequestError |
Request failed | Async hook with error and status |
aiRequestFinally |
Always after request ends | Async hook for cleanup/metrics |
async screenshot(addresses = [])
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| addresses | Array | No | [] | - |
sendInfo(info)
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| info | - | Yes | - | - |
AutoFilter/AutoFilter.js
AutoFilter
Props
| Name | Type | Static | Default | Description |
|---|---|---|---|---|
| sheet | Sheet | No | sheet | 所属工作表 |
Get/Set
| Name | Type | Mode | Static | Description |
|---|---|---|---|---|
| ref | string | null | get/set | No | 获取/设置默认(sheet)筛选范围 |
| sortState | {colIndex: number, order: ‘asc’ | ‘desc’} | null | get/set | No | 默认(sheet)作用域排序状态 |
Get
| Name | Type | Static | Description |
|---|---|---|---|
| activeScopeId | string | No | 当前激活作用域 ID |
| columns | Map<number, Object> | No | 默认(sheet)作用域筛选条件 |
| enabled | boolean | No | 默认(sheet)作用域是否启用 |
| hasActiveFilters | boolean | No | 默认(sheet)作用域是否有生效筛选 |
| headerRow | number | No | 默认(sheet)作用域表头行 |
| range | {s: {r: number, c: number}, e: {r: number, c: number}} | null | No | 默认(sheet)作用域范围 |
Methods
buildXml(scopeId = this._defaultScopeId): Object | null
- 构建指定作用域 XML;默认导出 sheet 作用域
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| scopeId | string | No | this._defaultScopeId | - |
Returns
- Type:
Object | null
clear(scopeId = this._defaultScopeId)
- 完全清除筛选(包含范围)
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| scopeId | string | No | this._defaultScopeId | - |
clearAllFilters(scopeId = null)
- 清除筛选条件(保留范围)
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| scopeId | string | No | null | - |
clearColumnFilter(colIndex, scopeId = null)
- 清除某列筛选
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| colIndex | number | Yes | - | - |
| scopeId | string | No | null | - |
getColumnFilter(colIndex, scopeId = null): Object | null
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| colIndex | number | Yes | - | - |
| scopeId | string | null | No | null | - |
Returns
- Type:
Object | null - Get filter config for column in scope.
getColumnValues(colIndex, scopeId = null): Array<{value: any, text: string, count: number, isEmpty: boolean}>
- 获取某列的所有唯一值(用于筛选面板)
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| colIndex | number | Yes | - | - |
| scopeId | string | No | null | - |
Returns
- Type:
Array<{value: any, text: string, count: number, isEmpty: boolean}>
getEnabledScopes(): Array<{scopeId:string,ownerType:string,ownerId:string | null,range:{s:{r:number,c:number},e:{r:number,c:number}},headerRow:number}>
Returns
- Type:
Array<{scopeId:string,ownerType:string,ownerId:string | null,range:{s:{r:number,c:number},e:{r:number,c:number}},headerRow:number}> - List enabled scopes sorted by range.
getScopeHeaderRow(scopeId = null): number
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| scopeId | string | null | No | null | - |
Returns
- Type:
number - Get header row index of scope.
getScopeRange(scopeId = null): {s:{r:number,c:number},e:{r:number,c:number}} | null
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| scopeId | string | null | No | null | - |
Returns
- Type:
{s:{r:number,c:number},e:{r:number,c:number}} | null - Get range of scope.
getSortOrder(colIndex, scopeId = null)
- 获取排序状态
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| colIndex | number | Yes | - | - |
| scopeId | string | No | null | - |
getTableScopeId(tableId): string
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| tableId | string | Yes | - | - |
Returns
- Type:
string - Build table scope id from table id.
hasActiveFiltersInScope(scopeId = null): boolean
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| scopeId | string | null | No | null | - |
Returns
- Type:
boolean - Check whether scope has active column filters.
hasAnyActiveFilters(): boolean
Returns
- Type:
boolean - Check whether any scope has active filters.
hasFilter(colIndex, scopeId = null)
- 判断列是否有筛选
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| colIndex | number | Yes | - | - |
| scopeId | string | No | null | - |
isColumnInRange(colIndex, scopeId = null)
- 判断某列是否在筛选范围内
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| colIndex | number | Yes | - | - |
| scopeId | string | No | null | - |
isHeaderRow(rowIndex, scopeId = null)
- 判断某行是否是表头行
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| rowIndex | number | Yes | - | - |
| scopeId | string | No | null | - |
isRowFilteredHidden(rowIndex): boolean
- 行是否因筛选被隐藏
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| rowIndex | number | Yes | - | - |
Returns
- Type:
boolean
isScopeEnabled(scopeId = null): boolean
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| scopeId | string | null | No | null | - |
Returns
- Type:
boolean - Check whether scope range is enabled.
parse(xmlObj)
- 从 worksheet AutoFilter 解析默认作用域
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| xmlObj | Object | Yes | - | - |
parseScope(scopeId, autoFilterXml, options = {})
- 将指定作用域的筛选状态解析到内存(主要用于 table 导入)
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| scopeId | string | Yes | - | - |
| autoFilterXml | Object | Yes | - | - |
| options | {range?: Object, restoreHiddenRowsFromSheet?: boolean, ownerType?: string, ownerId?: string} | No | {} | - |
registerTableScope(table, options = {}): string | null
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| table | Object | Yes | - | - |
| options | Object | No | {} | - |
Returns
- Type:
string | null - Register or update filter scope for table.
setActiveScope(scopeId): string
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| scopeId | string | null | Yes | - | - |
Returns
- Type:
string - Set active scope id when scope exists.
setColumnFilter(colIndex, filter, scopeId = null)
- 设置列筛选条件
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| colIndex | number | Yes | - | - |
| filter | Object | Yes | - | - |
| scopeId | string | No | null | - |
setRange(range, scopeId = this._defaultScopeId)
- 设置筛选范围(默认 sheet scope;可指定 scopeId)
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| range | {s: {r: number, c: number}, e: {r: number, c: number}} | Yes | - | - |
| scopeId | string | No | this._defaultScopeId | - |
setSortState(colIndex, order, scopeId = null)
- 设置排序状态
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| colIndex | number | Yes | - | - |
| order | ‘asc’ | ‘desc’ | Yes | - | - |
| scopeId | string | No | null | - |
unregisterTableScope(tableId, options = {}): void
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| tableId | string | Yes | - | - |
| options | {silent?:boolean} | No | {} | - |
Returns
- Unregister table scope and refresh view state.
Cell/Cell.js
Cell
- 单元格类
Props
| Name | Type | Static | Default | Description |
|---|---|---|---|---|
| cIndex | number | No | cIndex | 列索引 |
| isMerged | boolean | No | false | 是否为合并单元格 |
| master | {r:number, c:number} | null | No | null | 合并单元格主单元格引用 |
| row | Row | No | row | 所属行 |
Get/Set
| Name | Type | Mode | Static | Description |
|---|---|---|---|---|
| alignment | Object | get/set | No | 对齐方式 |
| border | Object | get/set | No | 边框样式 |
| dataValidation | Object | null | get/set | No | 数据验证配置 |
| editVal | string | get/set | No | 编辑值或公式 |
| fill | Object | get/set | No | 填充样式 |
| font | Object | get/set | No | 字体样式 |
| hyperlink | Object | null | get/set | No | 超链接配置 |
| numFmt | string | undefined | get/set | No | 数字格式 |
| protection | {locked: boolean, hidden: boolean} | get/set | No | 单元格保护配置 |
| richText | Array | null | get/set | No | 富文本 runs 数组 |
| style | Object | get/set | No | 单元格样式 |
| type | string | get/set | No | 单元格类型 |
Get
| Name | Type | Static | Description |
|---|---|---|---|
| accountingData | Object | undefined | No | 获取会计格式结构化数据(供渲染使用) |
| buildXml | Object | No | 构建单元格 XML |
| calcVal | any | No | 计算值 |
| horizontalAlign | string | No | 计算后的水平对齐方式 |
| isFormula | boolean | No | 是否为公式 |
| isLocked | boolean | No | 是否锁定 |
| isSpillRef | boolean | No | 是否是 spill 引用单元格 |
| isSpillSource | boolean | No | 是否是 spill 源单元格 |
| showVal | string | No | 显示值 |
| spillArray | Array[] | null | No | 获取完整的 spill 数组结果 |
| validData | boolean | No | 数据验证结果 |
| verticalAlign | string | No | 计算后的垂直对齐方式 |
CF/CF.js
CF
- CF 条件格式管理器<br>负责解析、存储和管理 Excel 条件格式规则
Props
| Name | Type | Static | Default | Description |
|---|---|---|---|---|
| rules | Array<CFRule> | No | [] | - |
| sheet | Sheet | No | sheet | - |
Methods
add(config = {}): CFRule
- 添加条件格式规则
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| config | Object | No | {} | 规则配置 |
| config.rangeRef | string | Yes | - | 应用范围 “A1:D10” |
| config.type | string | Yes | - | 规则类型 (colorScale/dataBar/iconSet/cellIs/expression/top10/aboveAverage/duplicateValues/containsText/timePeriod/containsBlanks/containsErrors) |
Returns
- Type:
CFRule - 创建的规则
clearAllCache(): void
- 清除所有缓存
clearRangeCache(sqref): void
- 清除指定范围的缓存
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| sqref | string | Yes | - | 范围 |
get(index): CFRule | null
- 获取规则
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| index | number | Yes | - | 规则索引 |
Returns
- Type:
CFRule | null
getAll(): Array<CFRule>
- 获取所有规则
Returns
- Type:
Array<CFRule>
getDxfId(dxf): number
- 获取dxf样式索引(用于导出)
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| dxf | Object | Yes | - | 差异化样式对象 |
Returns
- Type:
number - dxfId
getDxfList(): Array
- 获取dxf样式列表(用于导出styles.xml)
Returns
- Type:
Array
getFormat(r, c): Object | null
- 获取单元格的条件格式
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| r | number | Yes | - | 行索引 |
| c | number | Yes | - | 列索引 |
Returns
- Type:
Object | null - 格式对象
parse(xmlObj): void
- 从 xmlObj 解析条件格式数据
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| xmlObj | Object | Yes | - | Sheet 的 XML 对象 |
remove(index): boolean
- 删除条件格式规则
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| index | number | Yes | - | 规则索引 |
Returns
- Type:
boolean
toXmlObject(): Array
- 导出为worksheet XML节点数组
Returns
- Type:
Array
Col/Col.js
Col
- 列对象
Props
| Name | Type | Static | Default | Description |
|---|---|---|---|---|
| cIndex | number | No | cIndex | 列索引 |
| sheet | Sheet | No | sheet | 所属工作表 |
Get/Set
| Name | Type | Mode | Static | Description |
|---|---|---|---|---|
| alignment | Object | get/set | No | 对齐样式 |
| border | Object | get/set | No | 边框样式 |
| collapsed | boolean | get/set | No | 大纲折叠标记 |
| fill | Object | get/set | No | 填充样式 |
| font | Object | get/set | No | 字体样式 |
| hidden | boolean | get/set | No | 是否隐藏 |
| numFmt | string | undefined | get/set | No | 数字格式 |
| outlineLevel | number | get/set | No | 大纲层级(0-7) |
| style | Object | get/set | No | 列样式 |
| width | number | get/set | No | 列宽(像素) |
Get
| Name | Type | Static | Description |
|---|---|---|---|
| cells | Array<Cell> | No | 获取列内所有单元格 |
Comment/Comment.js
Comment
- Comment 批注管理器<br>高性能设计:Map索引(cellRef -> CommentItem)+ O(1)查找<br>架构参考:完全复刻 Drawing 的设计模式
Props
| Name | Type | Static | Default | Description |
|---|---|---|---|---|
| map | Map<string, CommentItem> | No | new Map() | - |
| sheet | Sheet | No | sheet | - |
Methods
add(config = {}): CommentItem
- 添加批注
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| config | Object | No | {} | {cellRef, author, text, visible, …} |
Returns
- Type:
CommentItem
clearCache()
- 清除所有批注的位置缓存(视图变化时调用)
get(cellRef): CommentItem | null
- 获取批注
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| cellRef | string | Yes | - | 单元格引用 “A1” |
Returns
- Type:
CommentItem | null
getAll(): CommentItem[]
- 获取所有批注列表
Returns
- Type:
CommentItem[]
parse(xmlObj)
- 从 xmlObj 解析批注数据(从 Excel 文件导入)
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| xmlObj | Object | Yes | - | Sheet 的 XML 对象 |
remove(cellRef): boolean
- 删除批注
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| cellRef | string | Yes | - | 单元格引用 “A1” |
Returns
- Type:
boolean
toXmlObject(): Object | null
- 导出为XML对象(用于Excel导出)<br>将线程批注转换为普通批注格式
Returns
- Type:
Object | null
Drawing/Drawing.js
Drawing
- Drawing manager - CRUD, XML parse & export
Props
| Name | Type | Static | Default | Description |
|---|---|---|---|---|
| map | Map<string, DrawingItem> | No | new Map() | - |
| sheet | - | No | sheet | - |
Methods
addChart(chartOption, options?): DrawingItem
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| chartOption | Object | Yes | - | - |
| options | DrawingOptions | No | - | - |
Returns
- Type:
DrawingItem
addImage(imageBase64, options?): DrawingItem
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| imageBase64 | string | Yes | - | - |
| options | DrawingOptions | No | - | - |
Returns
- Type:
DrawingItem
addShape(shapeType, options?): DrawingItem
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| shapeType | string | Yes | - | - |
| options | DrawingOptions | No | - | - |
Returns
- Type:
DrawingItem
get(id): DrawingItem | null
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string | Yes | - | - |
Returns
- Type:
DrawingItem | null
getAll(): DrawingItem[]
Returns
- Type:
DrawingItem[]
getByCell(cellRef): DrawingItem[]
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| cellRef | Object | string | Yes | - | - |
Returns
- Type:
DrawingItem[]
remove(id)
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string | Yes | - | - |
Formula/Formula.js
Formula
- 公式计算器
IO/IO.js
IO
Methods
export(type)
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| type | ‘XLSX’ | ‘CSV’ | ‘JSON’ | ‘HTML’ | Yes | - | - |
exportAllImage()
getData(): Promise<Object>
Returns
- Type:
Promise<Object>
async import(file): Promise<void>
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| file | File | Yes | - | - |
Returns
- Type:
Promise<void> - Import from xlsx/csv/json file.
async importFromUrl(fileUrl): Promise<void>
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| fileUrl | string | Yes | - | - |
Returns
- Type:
Promise<void>
setData(data): boolean
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| data | Object | Yes | - | - |
Returns
- Type:
boolean
Layout/Layout.js
Layout
- 布局与工具栏管理
Props
| Name | Type | Static | Default | Description |
|---|---|---|---|---|
| chatWindowOffsetX | number | No | 0 | 聊天窗口拖拽偏移 X |
| chatWindowOffsetY | number | No | 0 | 聊天窗口拖拽偏移 Y |
| menuConfig | Object | No | MenuConfig.initDefaultMenuConfig(SN, options) | 菜单配置 |
| myModal | Object | null | No | null | 通用弹窗实例 |
| SN | Object | No | SN | SheetNext 主实例 |
| StateSync | StateSync | No | new StateSync(SN) | 状态同步器 |
| toast | Object | null | No | null | Toast 实例 |
Get/Set
| Name | Type | Mode | Static | Description |
|---|---|---|---|---|
| showAIChat | boolean | get/set | No | 是否显示 AI 聊天入口 |
| showAIChatWindow | boolean | get/set | No | 是否显示 AI 聊天窗口 |
| showFormulaBar | boolean | get/set | No | 是否显示公式栏 |
| showMenuBar | boolean | get/set | No | 是否显示菜单栏 |
| showPivotPanel | boolean | get/set | No | 是否显示透视表字段面板 |
| showSheetTabBar | boolean | get/set | No | 是否显示工作表标签栏 |
| showStats | boolean | get/set | No | 是否显示统计栏 |
| showToolbar | boolean | get/set | No | 是否显示工具栏 |
Get
| Name | Type | Static | Description |
|---|---|---|---|
| isSmallWindow | boolean | No | 是否为小窗口 |
| isToolbarModeLocked | - | No | - |
| minimalToolbarTextEnabled | - | No | - |
| toolbarMode | - | No | - |
Methods
autoOpenPivotPanel(pt): void
- 自动打开透视表字段面板(点击透视表区域时调用)<br>如果用户手动关闭过,则不自动打开
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| pt | PivotTable | Yes | - | 透视表实例 |
closePivotPanel(): void
- 关闭透视表字段面板(点击透视表区域外时调用)<br>不会设置手动关闭标记
handleAllResize()
- 处理所有resize相关的逻辑
initColorComponents(scope?)
- Initialize color components.
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| scope | Element | No | - | Optional scope. |
initDragEvents()
- 初始化拖拽事件
initEventListeners()
- Initialize all event listeners.
initResizeObserver()
- 初始化ResizeObserver
openPivotPanel(pt): void
- 打开透视表字段面板(用户手动调用,如工具栏按钮)
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| pt | PivotTable | Yes | - | 透视表实例 |
refreshActiveButtons(): void
- 刷新工具栏中带有 active getter 的按钮状态<br>用于格式刷等切换按钮的双向绑定
refreshToolbar(): void
- 统一刷新工具栏状态(面板切换、API修改后调用)<br>整合:样式状态 + checkbox + active按钮
removeLoading()
- Remove loading animation.
scrollSheetTabs(dir): void
- 滚动工作表标签
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| dir | number | Yes | - | 滚动方向(1 或 -1) |
throttleResize()
- 节流处理resize事件
toggleMinimalToolbar(enabled)
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| enabled | - | Yes | - | - |
toggleMinimalToolbarText(enabled)
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| enabled | - | Yes | - | - |
togglePivotPanel(pt): boolean
- 切换透视表字段面板显示
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| pt | PivotTable | Yes | - | 透视表实例 |
Returns
- Type:
boolean - 是否显示
updateCanvasSize()
- 更新Canvas尺寸
updateContextualToolbar(context): void
- 更新上下文工具栏(根据选择内容显示/隐藏上下文选项卡)
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| context | Object | Yes | - | 上下文信息 { type: ‘table’|‘pivotTable’|‘chart’|null, data: any, autoSwitch: boolean }<br> - autoSwitch: 是否自动切换到上下文选项卡(默认false,只显示不切换) |
License/License.js
License
- License 授权管理类 (Ed25519)
Props
| Name | Type | Static | Default | Description |
|---|---|---|---|---|
| publicKey | string | No | ‘ISuSucIeA0p8Lftf0YHGogmXqDFvLtEFE46XsoB1R9s=’ | Ed25519 公钥(32 字节 Base64) |
| sheetNext | Object | No | sheetNext | SheetNext 主实例 |
| watermarkCanvas | HTMLCanvasElement | null | No | null | 水印离屏 canvas(未授权时创建) |
Get
| Name | Type | Static | Description |
|---|---|---|---|
| isActivated | boolean | No | 是否已激活授权 |
Methods
async activate(licenseKey): Promise<void>
- 激活授权
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| licenseKey | string | Yes | - | 授权码 |
Returns
- Type:
Promise<void>
base64Decode(str): string
- Base64 解码(支持 UTF-8)
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| str | string | Yes | - | Base64 字符串 |
Returns
- Type:
string
getInfo(): {domains: string[], expireDate: string, daysLeft: number} | null
- 获取 License 信息
Returns
- Type:
{domains: string[], expireDate: string, daysLeft: number} | null
validateLicense(data): boolean
- 验证 License 数据有效性
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| data | Object | Yes | - | License 数据 |
Returns
- Type:
boolean
async verifySignature(data, signatureBase64): Promise<boolean>
- 验证 Ed25519 签名(使用 Web Crypto API)
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| data | string | Yes | - | 原始数据字符串 |
| signatureBase64 | string | Yes | - | Base64 签名 |
Returns
- Type:
Promise<boolean>
PivotTable/PivotTable.js
PivotTable
- 透视表管理器<br>负责透视表的增删改查
Props
| Name | Type | Static | Default | Description |
|---|---|---|---|---|
| map | Map<string, PivotTableItem> | No | new Map() | - |
| sheet | Sheet | No | sheet | - |
Get
| Name | Type | Static | Description |
|---|---|---|---|
| size | number | No | - |
Methods
add(config): PivotTable
- 添加透视表
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| config | Object | Yes | - | 配置对象 |
| config.sourceSheet | Sheet | Yes | - | 源工作表 |
| config.sourceRangeRef | string | Yes | - | 源数据范围 |
| config.cellRef | string | Object | Yes | - | 目标单元格 |
Returns
- Type:
PivotTable
forEach(callback)
- 遍历所有透视表
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| callback | Function | Yes | - | - |
get(name): PivotTable | null
- 获取透视表
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| name | string | Yes | - | - |
Returns
- Type:
PivotTable | null
getAll(): Array<PivotTable>
- 获取所有透视表
Returns
- Type:
Array<PivotTable>
refreshAll()
- 刷新所有透视表
remove(name)
- 删除透视表
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| name | string | Yes | - | 透视表名称 |
Print/Print.js
- 打印设置与渲染
Props
| Name | Type | Static | Default | Description |
|---|---|---|---|---|
| SN | Object | No | SN | SheetNext 主实例 |
Methods
applySettingsToWorksheet(sheet, ws): void
- 应用打印设置到 worksheet XML
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| sheet | Sheet | Yes | - | 工作表 |
| ws | Object | Yes | - | worksheet XML 对象 |
bindPreviewEvents(bodyEl, pages, layout): void
- 绑定预览交互事件
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| bodyEl | HTMLElement | Yes | - | 弹窗 body |
| pages | Array<Object> | Yes | - | 页面数据 |
| layout | Object | Yes | - | 布局信息 |
buildCellAddress(sheet, cell): string
- 构建带工作表名的单元格地址
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| sheet | Sheet | Yes | - | 工作表 |
| cell | {r: number, c: number} | Yes | - | 单元格坐标 |
Returns
- Type:
string
buildLayout(sheet, settings, options = {}): Object
- 构建分页布局信息
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| sheet | Sheet | Yes | - | 工作表 |
| settings | Object | Yes | - | 打印设置 |
| options | Object | No | {} | - |
Returns
- Type:
Object
buildPreviewHtml(pages, layout): string
- 构建预览 HTML
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| pages | Array<Object> | Yes | - | 页面数据 |
| layout | Object | Yes | - | 布局信息 |
Returns
- Type:
string
buildPreviewPageHtml(page, layout, pageIndex = 0, pageCount = 1): string
- 构建单页预览 HTML
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| page | Object | Yes | - | 页面数据 |
| layout | Object | Yes | - | 布局信息 |
| pageIndex | number | No | 0 | - |
| pageCount | number | No | 1 | - |
Returns
- Type:
string
buildPrintHtml(pages, layout): string
- 构建打印 HTML
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| pages | Array<Object> | Yes | - | 页面数据 |
| layout | Object | Yes | - | 布局信息 |
Returns
- Type:
string
buildSegments(start, end, sizeGetter, maxSize, forcedStarts = []): Array<{s: number, e: number}>
- 构建分页区段
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| start | number | Yes | - | 起始索引 |
| end | number | Yes | - | 结束索引 |
| sizeGetter | Function | Yes | - | 获取尺寸方法 |
| maxSize | number | Yes | - | 最大尺寸 |
| forcedStarts | Array | No | [] | - |
Returns
- Type:
Array<{s: number, e: number}>
async captureRange(sheet, range, width, height, settings): Promise<string>
- 截图指定范围
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| sheet | Sheet | Yes | - | 工作表 |
| range | {s: {r: number, c: number}, e: {r: number, c: number}} | Yes | - | 范围 |
| width | number | Yes | - | 宽度 |
| height | number | Yes | - | 高度 |
| settings | Object | Yes | - | 打印设置 |
Returns
- Type:
Promise<string>
clearPrintArea(sheet = this.SN.activeSheet): void
- 清空打印区域
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| sheet | Sheet | No | this.SN.activeSheet | 工作表 |
createDefaultSettings(): Object
- 创建默认打印设置
Returns
- Type:
Object
ensureSettings(sheet = this.SN.activeSheet): Object | null
- 获取并确保工作表的打印设置
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| sheet | Sheet | No | this.SN.activeSheet | 工作表 |
Returns
- Type:
Object | null
getColSize(sheet, c): number
- 获取列宽(像素)
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| sheet | Sheet | Yes | - | 工作表 |
| c | number | Yes | - | 列索引 |
Returns
- Type:
number
getMarginPixels(margins = DEFAULT_MARGINS): {left: number, right: number, top: number, bottom: number}
- 计算边距像素值
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| margins | Object | No | DEFAULT_MARGINS | 边距配置 |
Returns
- Type:
{left: number, right: number, top: number, bottom: number}
getPageBreakGuides(sheet = this.SN.activeSheet): {range:Object,rowBreaks:Array<{index:number,manual:boolean}>,colBreaks:Array<{index:number,manual:boolean}>} | null
- 获取分页辅助线信息(用于画布显示)
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| sheet | Sheet | No | this.SN.activeSheet | 工作表 |
Returns
- Type:
{range:Object,rowBreaks:Array<{index:number,manual:boolean}>,colBreaks:Array<{index:number,manual:boolean}>} | null
getPaperDefinition(settings): Object
- 获取纸张定义
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| settings | Object | Yes | - | 打印设置 |
Returns
- Type:
Object
getPrintRange(sheet, settings): {s: {r: number, c: number}, e: {r: number, c: number}}
- 获取实际打印范围
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| sheet | Sheet | Yes | - | 工作表 |
| settings | Object | Yes | - | 打印设置 |
Returns
- Type:
{s: {r: number, c: number}, e: {r: number, c: number}}
getRangeSize(sheet, range, includeHeadings): {width: number, height: number}
- 获取范围尺寸
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| sheet | Sheet | Yes | - | 工作表 |
| range | {s: {r: number, c: number}, e: {r: number, c: number}} | Yes | - | 范围 |
| includeHeadings | boolean | Yes | - | 是否包含行列头 |
Returns
- Type:
{width: number, height: number}
getRowSize(sheet, r): number
- 获取行高(像素)
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| sheet | Sheet | Yes | - | 工作表 |
| r | number | Yes | - | 行索引 |
Returns
- Type:
number
getSettings(sheet = this.SN.activeSheet): Object | null
- 获取打印设置(深拷贝)
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| sheet | Sheet | No | this.SN.activeSheet | 工作表 |
Returns
- Type:
Object | null
getUsedRange(sheet): {s: {r: number, c: number}, e: {r: number, c: number}}
- 获取已使用区域
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| sheet | Sheet | Yes | - | 工作表 |
Returns
- Type:
{s: {r: number, c: number}, e: {r: number, c: number}}
initSheetPrintSettings(sheet): Object
- 初始化工作表打印设置
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| sheet | Sheet | Yes | - | 工作表 |
Returns
- Type:
Object
insertPageBreak(cell = sheet.activeCell, sheet = this.SN.activeSheet): {row:boolean, col:boolean} | null
- 在当前活动单元格插入手动分页符
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| cell | {r:number, c:number} | No | sheet.activeCell | 单元格位置 |
| sheet | Sheet | No | this.SN.activeSheet | 工作表 |
Returns
- Type:
{row:boolean, col:boolean} | null
normalizeRange(range, sheet): {s: {r: number, c: number}, e: {r: number, c: number}} | null
- 规范化范围对象
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| range | string | Object | null | Yes | - | 范围 |
| sheet | Sheet | Yes | - | 工作表 |
Returns
- Type:
{s: {r: number, c: number}, e: {r: number, c: number}} | null
async preview(options = {}): Promise<void>
- 打印预览
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| options | Object | No | {} | 预览选项 |
Returns
- Type:
Promise<void>
async print(options = {}): Promise<void>
- 打印
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| options | Object | No | {} | 打印选项 |
Returns
- Type:
Promise<void>
readSettingsFromXml(xmlObj, sheet = null): Object
- 从 XML 读取打印设置
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| xmlObj | Object | Yes | - | worksheet XML 对象 |
| sheet | null | No | null | - |
Returns
- Type:
Object
async renderPages(sheet, settings, layout): Promise<Array<Object>>
- 渲染所有页面
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| sheet | Sheet | Yes | - | 工作表 |
| settings | Object | Yes | - | 打印设置 |
| layout | Object | Yes | - | 布局信息 |
Returns
- Type:
Promise<Array<Object>>
setPageMargins(margins, sheet = this.SN.activeSheet): Object | null
- 设置页边距
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| margins | Object | Yes | - | 边距配置 |
| sheet | Sheet | No | this.SN.activeSheet | 工作表 |
Returns
- Type:
Object | null
setPageSetup(setup, sheet = this.SN.activeSheet): Object | null
- 设置页面配置
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| setup | Object | Yes | - | 页面设置 |
| sheet | Sheet | No | this.SN.activeSheet | 工作表 |
Returns
- Type:
Object | null
setPrintArea(range, sheet = this.SN.activeSheet): Object | null
- 设置打印区域
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| range | string | Object | Yes | - | 区域 |
| sheet | Sheet | No | this.SN.activeSheet | 工作表 |
Returns
- Type:
Object | null
setPrintOptions(options, sheet = this.SN.activeSheet): Object | null
- 设置打印选项
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| options | Object | Yes | - | 打印选项 |
| sheet | Sheet | No | this.SN.activeSheet | 工作表 |
Returns
- Type:
Object | null
setPrintTitles(titles, sheet = this.SN.activeSheet): void
- 设置打印标题行/列
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| titles | {rows?: string | number[] | {s:number,e:number} | null, cols?: string | number[] | {s:number,e:number} | null} | Yes | - | 标题配置 |
| sheet | Sheet | No | this.SN.activeSheet | 工作表 |
setSettings(partial, sheet = this.SN.activeSheet): Object | null
- 合并更新打印设置
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| partial | Object | Yes | - | 部分设置 |
| sheet | Sheet | No | this.SN.activeSheet | 工作表 |
Returns
- Type:
Object | null
toggleGridlines(on, sheet = this.SN.activeSheet): void
- 切换打印网格线
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| on | boolean | Yes | - | 是否启用 |
| sheet | Sheet | No | this.SN.activeSheet | 工作表 |
toggleHeadings(on, sheet = this.SN.activeSheet): void
- 切换打印行列头
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| on | boolean | Yes | - | 是否启用 |
| sheet | Sheet | No | this.SN.activeSheet | 工作表 |
toggleShowPageBreaks(on, sheet = this.SN.activeSheet): void
- 显示/隐藏分页符辅助线
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| on | boolean | Yes | - | 是否显示 |
| sheet | Sheet | No | this.SN.activeSheet | 工作表 |
Row/Row.js
Row
- 行对象
Props
| Name | Type | Static | Default | Description |
|---|---|---|---|---|
| cells | Array<Cell> | No | [] | 行内单元格数组 |
| rIndex | number | No | rIndex | 行索引 |
| sheet | Sheet | No | sheet | 所属工作表 |
Get/Set
| Name | Type | Mode | Static | Description |
|---|---|---|---|---|
| alignment | Object | get/set | No | 对齐样式 |
| border | Object | get/set | No | 边框样式 |
| collapsed | boolean | get/set | No | 大纲折叠标记 |
| fill | Object | get/set | No | 填充样式 |
| font | Object | get/set | No | 字体样式 |
| height | number | get/set | No | 行高(像素) |
| hidden | boolean | get/set | No | 是否隐藏 |
| numFmt | string | undefined | get/set | No | 数字格式 |
| outlineLevel | number | get/set | No | 大纲层级(0-7) |
| style | Object | get/set | No | 行样式 |
Methods
init(): void
- 初始化行内单元格
Sheet/Sheet.js
Sheet
Props
| Name | Type | Static | Default | Description |
|---|---|---|---|---|
| AutoFilter | AutoFilter | No | new AutoFilter(this) | - |
| Canvas | - | No | SN.Canvas | - |
| CF | null | No | null | - |
| cols | Col[] | No | [] | - |
| Comment | Comment | No | new Comment(this) | - |
| Drawing | null | No | null | - |
| initialized | boolean | No | false | - |
| merges | RangeNum[] | No | [] | - |
| outlinePr | Object | No | { | - |
| PivotTable | null | No | null | - |
| printSettings | Object | No | null | - |
| protection | Object | No | new SheetProtection(this) | - |
| rId | string | No | meta[‘_$r:id’] | - |
| rows | Row[] | No | [] | - |
| showGridLines | boolean | No | true | - |
| showPageBreaks | boolean | No | false | - |
| showRowColHeaders | boolean | No | true | - |
| Slicer | null | No | null | - |
| SN | - | No | SN | - |
| Sparkline | null | No | null | - |
| Table | Table | No | new Table(this) | - |
| Utils | - | No | SN.Utils | - |
| vi | Object | No | null | - |
| views | Object[] | No | [{ pane: {} }] | - |
Get/Set
| Name | Type | Mode | Static | Description |
|---|---|---|---|---|
| activeAreas | RangeNum[] | get/set | No | - |
| activeCell | CellNum | get/set | No | - |
| defaultColWidth | number | get/set | No | - |
| defaultRowHeight | number | get/set | No | - |
| frozenCols | number | get/set | No | - |
| frozenRows | number | get/set | No | - |
| headHeight | number | get/set | No | - |
| hidden | boolean | get/set | No | - |
| indexWidth | number | get/set | No | - |
| name | string | get/set | No | - |
| viewStart | CellNum | get/set | No | - |
| zoom | number | get/set | No | - |
Get
| Name | Type | Static | Description |
|---|---|---|---|
| colCount | number | No | - |
| rowCount | number | No | - |
Methods
addCols(c, number = 1)
- 插入列
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| c | Number | Yes | - | 插入位置的列索引 |
| number | Number | No | 1 | 插入的列数 |
addRows(r, number = 1)
- 插入行
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| r | Number | Yes | - | 插入位置的行索引 |
| number | Number | No | 1 | 插入的行数 |
applyBrush(targetArea): boolean
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| targetArea | RangeNum | Yes | - | - |
Returns
- Type:
boolean
areaHaveMerge(area): Boolean
- 检测区域中是否存在合并的单元格
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| area | Object | Yes | - | 区域对象 |
Returns
- Type:
Boolean - 是否存在合并单元格
areasBorder(position, options, area = this.activeAreas)
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| position | string | Yes | - | - |
| options | Object | null | Yes | - | - |
| area | Array | No | this.activeAreas | - |
cancelBrush(): boolean
Returns
- Type:
boolean
clearClipboard()
- 清除剪贴板
clearDataValidation(range)
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| range | - | Yes | - | - |
consolidate(ranges, options = {})
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| ranges | - | Yes | - | - |
| options | Object | No | {} | - |
copy(area = null, isCut = false)
- 复制区域数据
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| area | Object | No | null | 复制区域 { s: {r, c}, e: {r, c} } |
| isCut | boolean | No | false | 是否剪切 |
cut(area = null)
- 剪切区域数据
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| area | Object | No | null | 剪切区域 |
delCols(c, number = 1)
- 删除列
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| c | Number | Yes | - | 删除起始位置的列索引 |
| number | Number | No | 1 | 删除的列数 |
delRows(r, number = 1)
- 删除行
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| r | Number | Yes | - | 删除起始位置的行索引 |
| number | Number | No | 1 | 删除的行数 |
eachCells(ranges, callback, options = {})
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| ranges | RangeRef | RangeRef[] | Yes | - | - |
| callback | (r:number,c:number,area:RangeNum)=>void | Yes | - | - |
| options | {reverse?:boolean,sparse?:boolean} | No | {} | - |
flashFill(range, options = {})
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| range | - | Yes | - | - |
| options | Object | No | {} | - |
getAreaInviewInfo(area): Object
- 获取区域在可见视图中的信息
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| area | Object | Yes | - | 区域对象 |
Returns
- Type:
Object - 包含位置和尺寸信息的对象
getCell(r, c?): Cell
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| r | number | string | Yes | - | - |
| c | number | No | - | - |
Returns
- Type:
Cell
getCellInViewInfo(rowIndex, colIndex, posMerge = true): Object
- 获取单元格在可见视图中的信息
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| rowIndex | Number | Yes | - | 行索引 |
| colIndex | Number | Yes | - | 列索引 |
| posMerge | Boolean | No | true | 是否处理合并单元格 |
Returns
- Type:
Object - 包含位置和尺寸信息的对象
getClipboardData()
- 获取当前剪贴板数据
getCol(c): Col
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| c | number | Yes | - | - |
Returns
- Type:
Col
getColIndexByScrollLeft(scrollLeft): Number
- 根据水平滚动像素位置找到对应列索引
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| scrollLeft | Number | Yes | - | 滚动像素位置 |
Returns
- Type:
Number - 列索引
getRow(r): Row
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| r | number | Yes | - | - |
Returns
- Type:
Row
getRowIndexByScrollTop(scrollTop): Number
- 根据垂直滚动像素位置找到对应行索引
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| scrollTop | Number | Yes | - | 滚动像素位置 |
Returns
- Type:
Number - 行索引
getScrollLeft(colIndex): Number
- 获取指定列之前所有列的宽度总和
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| colIndex | Number | Yes | - | 列索引 |
Returns
- Type:
Number - 宽度总和
getScrollTop(rowIndex): Number
- 获取指定行之前所有行的高度总和
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| rowIndex | Number | Yes | - | 行索引 |
Returns
- Type:
Number - 高度总和
getTotalHeight(): Number
- 获取所有行的总高度(缓存优化)
Returns
- Type:
Number - 总高度
getTotalWidth(): Number
- 获取所有列的总宽度(缓存优化)
Returns
- Type:
Number - 总宽度
groupCols(range, options = {})
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| range | - | Yes | - | - |
| options | Object | No | {} | - |
groupRows(range, options = {})
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| range | - | Yes | - | - |
| options | Object | No | {} | - |
hasClipboardData()
- 检查是否有剪贴板数据
hyperlinkJump()
- Jump to hyperlink target of active cell.
insertTable(arr, pos, options = {})
- 从指定位置开始,插入一个表
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| arr | Array | Yes | - | 表格数据数组 |
| pos | Object | String | Yes | - | 插入位置 |
| options | Object | No | {} | 配置选项 {align, border, width, height, background, color} |
mergeCells(areas = null, mode = 'default')
- 合并单元格,支持多种模式
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| areas | Array | Object | String | null | No | null | 区域,默认取 activeAreas |
| mode | String | No | ‘default’ | 模式: ‘default’|‘center’|‘content’|‘same’ |
moveArea(moveArea, targetArea): boolean
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| moveArea | Object | string | Yes | - | - |
| targetArea | Object | string | Yes | - | - |
Returns
- Type:
boolean
paddingArea(oArea = this.Canvas.lastPadding.oArea, targetArea = this.Canvas.lastPadding.targetArea, type = 'order')
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| oArea | Object | string | No | this.Canvas.lastPadding.oArea | - |
| targetArea | Object | string | No | this.Canvas.lastPadding.targetArea | - |
| type | string | No | ‘order’ | Fill area with series/copy/format. |
paste(targetArea = null, options = {})
- 粘贴数据到目标区域
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| targetArea | Object | No | null | 目标区域起始位置 { r, c } 或完整区域 |
| options | Object | No | {} | 粘贴选项 |
| options.mode | string | Yes | - | 粘贴模式 (PasteMode) |
| options.operation | string | Yes | - | 运算模式 (PasteOperation) |
| options.skipBlanks | boolean | Yes | - | 跳过空单元格 |
| options.transpose | boolean | Yes | - | 转置 |
| options.externalData | Object | Yes | - | 外部剪贴板数据(从系统剪贴板解析) |
rangeSort(sortKeys, range?)
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| sortKeys | Array<{col:string | number, order?:string, customOrder?:Array}> | Yes | - | - |
| range | RangeRef | No | - | - |
rangeStrToNum(range): RangeNum
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| range | RangeStr | Yes | - | - |
Returns
- Type:
RangeNum
setBrush(keep = false)
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| keep | boolean | No | false | - |
setDataValidation(range, rule)
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| range | - | Yes | - | - |
| rule | - | Yes | - | - |
showAllHidCols()
showAllHidRows()
subtotal(range, options = {})
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| range | - | Yes | - | - |
| options | Object | No | {} | - |
textToColumns(range, options = {})
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| range | - | Yes | - | - |
| options | Object | No | {} | - |
ungroupCols(range, options = {})
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| range | - | Yes | - | - |
| options | Object | No | {} | - |
ungroupRows(range, options = {})
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| range | - | Yes | - | - |
| options | Object | No | {} | - |
unMergeCells(cellAd = null)
- 解除合并,传入单元格地址或区域,默认取 activeAreas
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| cellAd | Object | String | null | No | null | 单元格地址或区域 |
zoomIn(step = 0.1): number
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| step | number | No | 0.1 | - |
Returns
- Type:
number
zoomOut(step = 0.1): number
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| step | number | No | 0.1 | - |
Returns
- Type:
number
zoomToSelection(): number
Returns
- Type:
number - Zoom to fit the selected area.
Slicer/Slicer.js
Slicer
- 切片器管理器<br>负责切片器的增删改查
Props
| Name | Type | Static | Default | Description |
|---|---|---|---|---|
| map | Map<string, SlicerItem> | No | new Map() | - |
| sheet | Sheet | No | sheet | - |
Get
| Name | Type | Static | Description |
|---|---|---|---|
| size | number | No | - |
Methods
add(config): Slicer
- 添加切片器
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| config | Object | Yes | - | 配置对象 |
Returns
- Type:
Slicer
forEach(callback)
- 遍历所有切片器
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| callback | Function | Yes | - | - |
get(id): Slicer | null
- 获取切片器
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string | Yes | - | - |
Returns
- Type:
Slicer | null
getAll(): Array<Slicer>
- 获取所有切片器
Returns
- Type:
Array<Slicer>
remove(id)
- 删除切片器
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string | Yes | - | - |
Sparkline/Sparkline.js
Sparkline
- 迷你图管理器
Props
| Name | Type | Static | Default | Description |
|---|---|---|---|---|
| groups | Array<Object> | No | [] | 迷你图组列表 |
| map | Map<string, SparklineItem> | No | new Map() | 按位置索引的迷你图 Map: “R:C” -> SparklineItem |
| sheet | Sheet | No | sheet | 所属工作表 |
Methods
add(config): SparklineItem | null
- 添加迷你图
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| config | Object | Yes | - | 配置对象 |
| config.cellRef | string | Object | Yes | - | 单元格引用 “A1” 或 {r, c} |
| config.formula | string | Yes | - | 数据范围公式 |
| config.type | string | No | ‘line’ | 迷你图类型 |
| config.colors | Object | No | {} | 颜色配置 |
Returns
- Type:
SparklineItem | null
clearAllCache()
- 清除所有缓存
clearCache(cellRefOrRow, c?)
- 清除指定迷你图的缓存
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| cellRefOrRow | string | Object | number | Yes | - | 单元格引用 “A1”/{r,c} 或行索引 |
| c | number | No | - | 列索引(仅在第一个参数为行索引时使用) |
get(cellRef): SparklineItem | null
- 根据单元格位置获取迷你图
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| cellRef | string | Object | Yes | - | 单元格引用 “A1” 或 {r, c} |
Returns
- Type:
SparklineItem | null
getAll(): Array<SparklineItem>
- 获取所有迷你图实例
Returns
- Type:
Array<SparklineItem>
parse(xmlObj)
- 从 xmlObj 解析迷你图数据
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| xmlObj | Object | Yes | - | Sheet 的 XML 对象 |
remove(cellRef): boolean
- 删除迷你图
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| cellRef | string | Object | Yes | - | 单元格引用 “A1” 或 {r, c} |
Returns
- Type:
boolean
toXmlObj(): Object | null
- 导出为 XML 对象结构
Returns
- Type:
Object | null
Table/Table.js
Table
Props
| Name | Type | Static | Default | Description |
|---|---|---|---|---|
| sheet | Sheet | No | sheet | - |
Get
| Name | Type | Static | Description |
|---|---|---|---|
| size | - | No | 表格数量 |
Methods
add(options = {}): TableItem
- 添加/创建新表格
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| options | Object | No | {} | - |
Returns
- Type:
TableItem
createFromSelection(area, options = {}): TableItem
- 从选区创建表格
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| area | Object | Yes | - | { s: {r, c}, e: {r, c} } |
| options | Object | No | {} | - |
Returns
- Type:
TableItem
forEach(callback)
- 遍历所有表格
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| callback | Function | Yes | - | - |
fromJSON(jsonArray)
- 从 JSON 恢复
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| jsonArray | Array | Yes | - | - |
get(id): TableItem | null
- 根据ID获取表格
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string | Yes | - | - |
Returns
- Type:
TableItem | null
getAll(): TableItem[]
Returns
- Type:
TableItem[]
getByName(name): TableItem | null
- 根据名称获取表格
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| name | string | Yes | - | - |
Returns
- Type:
TableItem | null
getTableAt(row, col): TableItem | null
- 获取包含指定单元格的表格
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| row | number | Yes | - | - |
| col | number | Yes | - | - |
Returns
- Type:
TableItem | null
remove(id): boolean
- 删除表格
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string | Yes | - | 表格ID |
Returns
- Type:
boolean
removeByName(name): boolean
- 根据名称删除表格
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| name | string | Yes | - | - |
Returns
- Type:
boolean
toJSON()
- 转为 JSON 数组
UndoRedo/UndoRedo.js
UndoRedo
Props
| Name | Type | Static | Default | Description |
|---|---|---|---|---|
| maxStack | number | No | 50 | - |
Get
| Name | Type | Static | Description |
|---|---|---|---|
| canRedo | boolean | No | - |
| canUndo | boolean | No | - |
Methods
add(action): void
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| action | {undo: Function, redo: Function, activeCell?: {r:number,c:number}} | Yes | - | - |
Returns
- Add undo action into current transaction.
begin(name = ''): void
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| name | string | No | ‘’ | - |
Returns
- Begin a manual undo transaction.
clear(): void
Returns
- Clear undo/redo stacks and pending transaction.
commit(): void
Returns
- Commit current manual transaction.
redo(): boolean
Returns
- Type:
boolean
undo(): boolean
Returns
- Type:
boolean
Utils/Utils.js
Utils
Methods
cellNumToStr(cellNum): string
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| cellNum | {c:number,r:number} | Yes | - | - |
Returns
- Type:
string
cellStrToNum(cellStr): {c:number,r:number} | undefined
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| cellStr | string | Yes | - | - |
Returns
- Type:
{c:number,r:number} | undefined
charToNum(name): number
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| name | string | Yes | - | - |
Returns
- Type:
number
debounce(func, wait): Function
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| func | Function | Yes | - | - |
| wait | number | Yes | - | - |
Returns
- Type:
Function - Create a debounced function.
decodeEntities(encodedString): string
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| encodedString | string | Yes | - | - |
Returns
- Type:
string - Decode HTML entities to plain text.
async downloadImageToBase64(imageUrl): Promise<string | undefined>
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| imageUrl | string | Yes | - | - |
Returns
- Type:
Promise<string | undefined> - Fetch image URL and return base64 data URL.
emuToPx(emu): number
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| emu | number | Yes | - | - |
Returns
- Type:
number - Convert EMU to pixels.
getFillFormula(formula, originalRow, originalCol, targetRow, targetCol): string
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| formula | string | Yes | - | - |
| originalRow | number | Yes | - | - |
| originalCol | number | Yes | - | - |
| targetRow | number | Yes | - | - |
| targetCol | number | Yes | - | - |
Returns
- Type:
string - Build fill formula by shifting relative refs only.
modal(options = {}): Promise<{bodyEl: HTMLElement} | null>
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| options | Object | No | {} | - |
Returns
- Type:
Promise<{bodyEl: HTMLElement} | null> - Open common modal panel.
numToChar(num): string
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| num | number | Yes | - | - |
Returns
- Type:
string
objToArr(obj): Array<any>
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| obj | any | Yes | - | - |
Returns
- Type:
Array<any> - Normalize any value to array.
pxToEmu(px): number
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| px | number | Yes | - | - |
Returns
- Type:
number - Convert pixels to EMU.
rangeNumToStr(obj, absolute = false): string
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| obj | {s:{r:number,c:number},e:{r:number,c:number}} | Yes | - | - |
| absolute | boolean | No | false | - |
Returns
- Type:
string
rgbToHex(rgb): string
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| rgb | string | Yes | - | - |
Returns
- Type:
string - Convert rgb() string to hex color.
sortObjectInPlace(obj, keyOrder): void
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| obj | Object | Yes | - | - |
| keyOrder | Array<string> | Yes | - | - |
Returns
- Reorder object keys in-place.
toast(message): void
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| message | any | Yes | - | - |
Returns
- Show toast message.
Workbook/Workbook.js
SheetNext
Props
| Name | Type | Static | Default | Description |
|---|---|---|---|---|
| Action | Action | No | new Action(this) | - |
| AI | AI | No | new AI(this, options) | - |
| calcMode | ‘auto’ | ‘manual’ | No | ‘auto’ | - |
| Canvas | Canvas | No | new Canvas(this) | - |
| containerDom | - | No | dom | - |
| DependencyGraph | DependencyGraph | No | new DependencyGraph(this) | - |
| Event | EventEmitter | No | new EventEmitter() | - |
| Formula | Formula | No | new Formula(this) | - |
| I18n | - | No | this._createI18n(options) | - |
| IO | IO | No | new IO(this) | - |
| Layout | Layout | No | new Layout(this, options) | - |
| License | License | No | new License(this, options.licenseKey) | - |
| namespace | string | No | this._setupGlobalNamespace() | - |
| No | new Print(this) | - | ||
| properties | Object | No | {} | - |
| sheets | Sheet[] | No | [] | - |
| UndoRedo | UndoRedo | No | new UndoRedo(this) | - |
| Utils | Utils | No | new Utils(this) | - |
| Xml | Xml | No | new Xml(this) | - |
Get/Set
| Name | Type | Mode | Static | Description |
|---|---|---|---|---|
| activeSheet | Sheet | get/set | No | - |
| readOnly | boolean | get/set | No | - |
| workbookName | string | get/set | No | - |
Get
| Name | Type | Static | Description |
|---|---|---|---|
| locale | string | No | - |
Methods
addSheet(sheetName?): Sheet | null
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| sheetName | string | No | - | - |
Returns
- Type:
Sheet | null
delSheet(name)
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| name | string | Yes | - | - |
static getLocale(locale): Object | undefined
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| locale | string | Yes | - | - |
Returns
- Type:
Object | undefined
getSheet(sheetName): Sheet | null
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| sheetName | string | Yes | - | - |
Returns
- Type:
Sheet | null
recalculate(currentSheetOnly = false)
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| currentSheetOnly | boolean | No | false | - |
static registerLocale(locale, messages): typeof SheetNext
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| locale | string | Yes | - | - |
| messages | Object | Yes | - | - |
Returns
- Type:
typeof SheetNext
setLocale(locale)
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| locale | string | Yes | - | - |
t(key, params = {}): string
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| key | string | Yes | - | - |
| params | Record<string, any> | No | {} | - |
Returns
- Type:
string
Xml/Xml.js
Xml
- Xml 解析与构建器
Props
| Name | Type | Static | Default | Description |
|---|---|---|---|---|
| obj | Object | No | obj ?? JSON.parse(JSON.stringify(snXml)) | XML 对象 |
| objTp | Object | No | snXml | XML 模板 |
| sharedStringsObj | Object | No | {} // 共享字符串去重对象清空 | 共享字符串去重对象 |
| SN | Object | No | SN | SheetNext 主实例 |
| Utils | Utils | No | SN.Utils | 工具方法集合 |
Get
| Name | Type | Static | Description |
|---|---|---|---|
| clrScheme | Object | No | 当前文件主题配色 |
| clrSchemeTp | Object | No | 主题模板配色 |
| override | Array | No | 覆盖关系 |
| relationship | Array | No | 关系集合 |
| sheets | Array | No | 所有工作表信息 |
| sst | Object | No | 共享字符串表 |
| styleSheet | Object | No | 样式表 |
Methods
addSheet(sheetName, ops): void
- 添加工作表
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| sheetName | string | Yes | - | 工作表名称 |
| ops | Object | Yes | - | 初始化参数 |
getRelsByTarget(targetPath, create = false): Object
- 根据关系 target 路径获取 .rels 中的关系数组
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| targetPath | string | Yes | - | 目标路径 |
| create | boolean | No | false | 是否在不存在时创建 |
Returns
- Type:
Object
getWsRelsFileTarget(sheetRId, fileRId): string | null
- 根据工作表依赖文件中的 RId 获取目标路径
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| sheetRId | string | Yes | - | 工作表 RId |
| fileRId | string | Yes | - | 依赖文件 RId |
Returns
- Type:
string | null
resetStyle(): void
- 重置样式表
resolveHyperlinkById(rId): Object | null
- 根据 RId 解析超链接
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| rId | string | Yes | - | 关系 Id |
Returns
- Type:
Object | null