我们很高兴地宣布SpreadJS v19.2正式发布。本次版本聚焦于帮助开发者构建更贴近 Excel、更适合数据分析、更具协作能力的 JavaScript 电子表格应用。
新版本扩展了「模拟分析」能力,新增方案(Scenario)支持;为设计器功能区组件带来强大的键提示(KeyTip)能力;让数据透视表可以直接连接 DataManager 数据;增强了协作服务器对基于 DataManager 绑定的支持;并在工作簿、单元格格式、GanttSheet、ReportSheet 以及前端框架支持等方面带来了一系列实用更新。
准备好了解细节了吗?让我们一起看看 SpreadJS v19.2 带来了哪些新特性。
立即下载最新版 SpreadJS
设计器增强
功能区键提示(Ribbon KeyTips)
SpreadJS 设计器现已支持与 Excel 一致的功能区键提示。按下Alt或F10后,文件菜单和功能区各选项卡上会显示可见的按键标签,用户可以直接通过键盘切换选项卡、打开菜单并执行命令。
开发者可以在功能区配置中启用或禁用键提示、自定义激活键,并定义自定义的 KeyTip 值。这一特性提升了键盘可访问性,也让高频用户在设计器中拥有更高效的键盘工作流。
通过右键菜单重命名工作表
设计器的工作表标签右键菜单中新增了「重命名」命令。它与原有的双击重命名方式互为补充,让工作表重命名操作更容易被发现和使用。
CJK 格式化与本地化改进
设计器新增了对 Excel 风格格式化转义语义(formatter escape)在 CJK 环境下的支持,提升了本地化数字格式输入的兼容性。打印纸张大小与单位的默认值也可以跟随区域文化设置而变化,例如在日语文化下默认使用 A4,而不再始终默认为 Letter。
保护选项类型定义补全
设计器的类型定义现已包含此前缺失的工作表保护(protection)相关选项,改进了 TypeScript 支持,让设计器配置在强类型应用中更易于使用。
公式
进度迷你图(Progress Sparkline)
全新的、由公式驱动的进度迷你图,让用户可以直接在单元格中展示进度。开发者可以用这种紧凑的可视化形式呈现任务完成度、KPI 状态、目标跟踪和运营看板,而无需额外构建独立的图表对象。
FILTERXML 函数
SpreadJS v19.2 新增对FILTERXML函数的支持。这一与 Excel 兼容的函数可以使用 XPath 表达式从 XML 文本中提取数据,帮助电子表格应用直接在公式中处理结构化的 XML 内容。
例如,假设单元格 A1 中包含以下 XML 字符串:
<catalog> <product id="1" category="electronics">Laptop</product> <product id="2" category="electronics">Phone</product> <product id="3" category="clothing">T-Shirt</product> </catalog>| 公式 | 结果 | 说明 |
|---|---|---|
| =FILTERXML(A1,“//product/@id”) | {1; 2; 3} | 返回所有 id 属性值。 |
| =FILTERXML(A1,“//product[@category=‘electronics’]”) | {“Laptop”; “Phone”} | 返回 electronics 分类下的产品。 |
| =FILTERXML(A1,“//product[@id=‘2’]”) | Phone | 返回 id=“2” 的产品。 |
至此,对于需要导入 Excel 工作簿、或使用公式解析基于 XML 的数据载荷的应用而言,又少了一处公式兼容性缺口。
东亚全角公式输入
公式输入现已更好地支持东亚全角语法。在日语和中文的 Excel 环境中,用户经常通过本地化输入法输入全角括号或相关的公式字符。SpreadJS v19.2 通过支持与 Excel 一致的转换与处理逻辑,改进了这类本地化公式输入体验。
单元格
类 Excel 聚焦单元格(Focus Cell)
SpreadJS v19.2 新增聚焦单元格功能。这是一个工作簿级别的视觉辅助特性,可用可配置的颜色和透明度高亮当前活动单元格所在的行与列。它能让终端用户在处理大型工作表时更容易保持方位感,尤其适用于宽幅财务模型、复杂报表或高密度运营数据表等场景。
聚焦单元格的行为类似于一层 UI 导航层,而不是被存储的单元格样式。它不会修改工作表数据,不会被导出到 Excel,也不会出现在打印或 PDF 输出中。同时它可以与选区、合并单元格、隐藏行列以及设计器工作流配合使用。
开发者可以通过工作簿选项启用该功能,设计器用户则可以在「视图」选项卡中进行开关。
面向 CJK 与数字文本的填充序列改进
「填充序列」现已更好地支持以数字结尾的字符串,包括 CJK 输入中使用的全角数字。这改进了本地化数据录入场景下大家熟悉的 Excel 式拖拽填充体验,例如生成物料标签、单据编号或区域编码等。
单元格圆角边框
SpreadJS v19.2 为工作表单元格、跨行列区域(span)、区域和表头新增了圆角边框支持。这对于报表式布局、分组表单区块、工资单类文档、仪表盘,以及其他需要直接在表格中呈现圆角矩形分区的业务表单尤为实用。
圆角边框通过borderRadius成为单元格样式状态的一部分,区域既可以统一应用圆角,也可以只对可见的外侧角应用圆角。该实现与现有的边框优先级规则、受支持的线型、隐藏行列、JSON/SJS 持久化以及 PDF 导出均可协同工作。
设计器端的支持让这一特性无需编写代码即可被发现和使用,而 API 则为开发者提供了对单个单元格和区域的精确控制。
模拟分析
方案分析(Scenario)
SpreadJS v19.2 通过新增方案支持,进一步扩展了「模拟分析」能力。方案允许用户保存命名的输入值集合,将其应用到工作簿,重新计算相关公式,并快速对比不同的业务结果。
与 Excel 中按工作表划分作用域的模型不同,SpreadJS 的方案是工作簿级别的,这使其在现代电子表格应用以及未来的共享视图工作流中更加灵活。方案可以跨越多个工作表,跟踪用于还原操作的基础值,在插入、删除、移动或排序行列时更新已存储的引用,并可参与工作簿序列化。
开发者可以使用方案管理器 API 获取、设置、应用、还原、移除和激活方案。激活「方案模式」后,后续的单元格编辑会被自动捕获到方案中,让终端用户创建方案更加轻松。
方案面板与设计器支持
设计器新增了方案管理 UI,用户可以通过熟悉的界面查看、应用和管理方案。这让业务用户无需编写代码,即可使用模拟分析来对比不同计划、预测、预算或备选假设。
数据
工作表、单元格与表格绑定到 DataManager
SpreadJS v19.2 强化了工作表绑定与 DataManager 之间的连接。工作表级绑定、单元格绑定、表格绑定路径(table binding path)以及表格绑定现在都可以使用由 DataManager 提供的数据,为复杂的电子表格应用带来更统一的数据模型。
这减少了重复的数据管道代码,也使得「业务数据由 DataManager 集中管理、同时通过电子表格 UI 呈现与编辑」这类应用更容易构建。
TableSheet 排序与筛选 API
TableSheet 现在为排序和筛选操作提供了 API,而此前这些操作主要通过 UI 交互完成。开发者可以通过编程方式应用筛选和排序选项、清除先前的状态,从而构建更可控的 TableSheet 工作流。
这些 API 让 TableSheet 更容易集成到自定义仪表盘、工作流工具以及由服务端驱动的应用逻辑中。
图表
图表数据标签字体样式
图表数据标签现在支持更丰富的字体样式。用户可以通过设计器或图表 API 配置标签的字体名称、字号、颜色、加粗、倾斜、下划线、删除线等相关格式,让图表与 Excel 输出效果及应用程序的设计要求更加一致。
图表坐标轴标题文字方向
SpreadJS v19.2 通过支持坐标轴标题文字方向,进一步提升了与 Excel 图表的兼容性。从 Excel 导入的、坐标轴标题文字为竖排或旋转排布的图表,现在可以在 SpreadJS 中更忠实地呈现;同时设计器也新增了配置文字方向的相关控件。
绘图区自定义
图表现在支持绘图区(plot area)自定义,包括填充、边框和布局设置。这让开发者和设计器用户对图表呈现方式拥有更强的控制力,也更容易与 Excel 工作簿中可用的格式保持一致。
打印
工作表中的自定义打印线
分页符与打印预览工作流现在更易于定制。SpreadJS v19.2 支持通过 CSS 自定义打印线的外观,开发者可以调整分页线的颜色和宽度,以更好地匹配应用 UI 或报表工作流。
像 Excel 一样按区域文化设置纸张大小与单位
打印纸张大小与单位的默认值现在可以跟随区域文化设置,例如在日语文化下默认使用 A4,而不再始终默认为 Letter。
数据透视表
直接使用 DataManager 的表与视图创建数据透视表
数据透视表现在可以直接使用 DataManager 的 Table 和 View 作为数据源。这样就不再需要先把 DataManager 数据落地到工作表或 TableSheet,然后再用数据透视表进行分析。
数据透视表可以使用单个 DataManager Table,也可以使用 DataManager View(包括基于关系(relation)的视图结果)。DataManager 依然负责数据获取、关系维护和数据变更,而数据透视表消费其产出的表状数据来构建和刷新 PivotCache。
开发者可以通过autoRefresh控制自动刷新行为,使用updateSource()显式刷新数据源,并可以选择 JSON/SJS 保存输出中是否包含已物化的外部数据源 PivotCache 数据。
自定义分类汇总
SpreadJS v19.2 为数据透视表的行字段和列字段新增了**自定义分类汇总(custom subtotals)**支持。这提升了与 Excel 的一致性,也让用户在构建分析型透视报表时能更精细地控制分类汇总行为。
协作服务器
协作支持基于 DataManager 的绑定
基于 DataManager 的绑定也获得了协作能力支持。多个用户可以同时操作已绑定的工作表、单元格和表格,并在整个协作会话中保持绑定配置及相关状态的一致性。
最新的 V19 SP2 规范覆盖了工作表绑定与基于 DataManager 的表格绑定协作,并针对由远程 DataManager 数据支撑的表格绑定补充了额外行为。对于本地 DataManager 数据,协作支持查看、编辑以及绑定区域的相关操作;对于远程数据,SpreadJS 会同步绑定配置与表格状态,而远程数据的一致性仍由应用后端及其刷新流程负责。
AI 助手
SJS.AI.QUERY 支持多参数
SJS.AI.QUERY函数现在支持传入多个提示词(prompt)和数据参数。这使得构建更丰富的 AI 辅助电子表格公式更加容易——可以把多段提示词和多个数据区域组合到一次 AI 请求中。
包含多个提示词与数据区域的示例公式:
=SJS.AI.QUERY("清理这些杂乱数据", B4:B14, "根据列标签提取数值", C3:F3)数据图表(DataCharts)
DataCharts 日期坐标轴
DataCharts 现在为 BI 和分析场景提供了更丰富的日期坐标轴行为。日期字段既可以按原始日期使用,也可以分组为派生的日期粒度,如年、季度、月或日。坐标轴渲染既可以使用连续日期刻度,也可以使用有序类别刻度,让开发者对数据分组和视觉呈现都拥有控制权。
这让 DataCharts 更适合时间序列分析、财务仪表盘、销售趋势报表以及其他以日期为驱动的可视化场景。
DataCharts 网格绑定(Trellis Binding)
SpreadJS v19.2 为 DataCharts 新增了网格绑定(Trellis Binding),也就是通常所说的「小倍数图(small multiples)」。现在可以基于行和列的分类字段,将单个数据集拆分为重复排列的多个图表面板,从而更容易在地区、产品类别、部门、年度、季度等维度之间对比数值。
网格绑定可适用于多种图表类型,并支持行绑定、列绑定、多级分组、共享坐标轴或每个单元格独立坐标轴、空单元格处理,以及针对网格表头和网格线的样式选项。
DataCharts 正负值配色
DataCharts 现在可以为柱形、条形和面积类可视化分别设置正值和负值的颜色。这让差异值、盈亏、现金流以及其他高于或低于基准线的数值更容易一眼读懂。
DataCharts 线条样式(Line Aspect)
折线图、面积图、范围面积图、堆积面积图、百分比堆积面积图、雷达图以及填充雷达图等 DataCharts 获得了更丰富的线条样式选项。开发者可以在受支持的情况下选择默认、样条(spline)、阶梯(step)和贝塞尔(Bezier)等渲染方式,让图表更贴合预期的分析风格和类 Excel 的输出效果。
DataCharts 其他增强
本次发布还为空间受限时的绘图区与图例新增了自定义布局行为,将颜色编码与详细信息编码分离以让图表配置更清晰,并扩展了 DataCharts 各图表类型的配置覆盖范围。
ReportSheet
报表生成事件与临时文本
ReportSheet 现在提供了围绕报表生成过程的事件,并支持在报表生成期间显示临时文本。这些改进帮助开发者在报表生成可能耗时较长的应用中,提供更清晰的加载反馈。
工作表与 ReportSheet 水印
水印增强同样适用于 ReportSheet 场景,让开发者对文档状态标识和报表呈现拥有更强的控制力。
GanttSheet
GanttSheet 支持进度线(Progress Line)
GanttSheet 新增进度线支持,帮助项目经理和应用用户基于选定的状态日期(status date)直观呈现项目状态。该特性包含状态日期显示、符合条件任务的进度点,以及贯穿图表区域的连接进度线。
这让 GanttSheet 在项目跟踪、进度评审和状态汇报等工作流中更加实用。
UI 与交互增强
| 增强项 | 说明 | 预览 |
|---|---|---|
| 类 Excel 的筛选按钮位置 | 改进了筛选行为,采用更贴近 Excel 的策略,将筛选按钮放置在所选区域的第一行。这可以减少那些期望所选区域第一行作为表头行的用户产生的困惑。 | |
| 在设计器中重新应用筛选 | 设计器新增对类 Excel「重新应用筛选(Reapply)」的支持,允许用户在底层数据发生变化后重新应用已有的筛选和排序条件。这包括工作表筛选、表格筛选,以及按颜色排序等筛选菜单中的排序状态。 | |
| 支持 commitInput 命令 | 新增一个内置命令,可在不移动焦点的情况下提交单元格编辑器的输入,从而支持「按 Enter 仅保存输入」这类自定义键盘工作流。 | commandManager.setShortcutKey("commitInput", GC.Spread.Commands.Key.enter, false, false, false, false); |
| 触摸选择指示器自定义 | 为触摸选择指示器提供了自定义入口,让移动端/触摸场景能更好地匹配产品 UX 要求。 | |
框架支持
支持 Angular 22
SpreadJS 已完成全面测试,并确认与 Angular 22 兼容。开发者可以放心升级 Angular 应用,而无需修改任何 SpreadJS 集成代码。