我们很高兴地宣布SpreadJS v19.2正式发布。本次版本聚焦于帮助开发者构建更贴近 Excel、更适合数据分析、更具协作能力的 JavaScript 电子表格应用。新版本扩展了「模拟分析」能力新增方案Scenario支持为设计器功能区组件带来强大的键提示KeyTip能力让数据透视表可以直接连接 DataManager 数据增强了协作服务器对基于 DataManager 绑定的支持并在工作簿、单元格格式、GanttSheet、ReportSheet 以及前端框架支持等方面带来了一系列实用更新。准备好了解细节了吗让我们一起看看 SpreadJS v19.2 带来了哪些新特性。立即下载最新版 SpreadJS设计器增强功能区键提示Ribbon KeyTipsSpreadJS 设计器现已支持与 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 id1 categoryelectronicsLaptop/product product id2 categoryelectronicsPhone/product product id3 categoryclothingT-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 CellSpreadJS v19.2 新增聚焦单元格功能。这是一个工作簿级别的视觉辅助特性可用可配置的颜色和透明度高亮当前活动单元格所在的行与列。它能让终端用户在处理大型工作表时更容易保持方位感尤其适用于宽幅财务模型、复杂报表或高密度运营数据表等场景。聚焦单元格的行为类似于一层 UI 导航层而不是被存储的单元格样式。它不会修改工作表数据不会被导出到 Excel也不会出现在打印或 PDF 输出中。同时它可以与选区、合并单元格、隐藏行列以及设计器工作流配合使用。开发者可以通过工作簿选项启用该功能设计器用户则可以在「视图」选项卡中进行开关。面向 CJK 与数字文本的填充序列改进「填充序列」现已更好地支持以数字结尾的字符串包括 CJK 输入中使用的全角数字。这改进了本地化数据录入场景下大家熟悉的 Excel 式拖拽填充体验例如生成物料标签、单据编号或区域编码等。单元格圆角边框SpreadJS v19.2 为工作表单元格、跨行列区域span、区域和表头新增了圆角边框支持。这对于报表式布局、分组表单区块、工资单类文档、仪表盘以及其他需要直接在表格中呈现圆角矩形分区的业务表单尤为实用。圆角边框通过borderRadius成为单元格样式状态的一部分区域既可以统一应用圆角也可以只对可见的外侧角应用圆角。该实现与现有的边框优先级规则、受支持的线型、隐藏行列、JSON/SJS 持久化以及 PDF 导出均可协同工作。设计器端的支持让这一特性无需编写代码即可被发现和使用而 API 则为开发者提供了对单个单元格和区域的精确控制。模拟分析方案分析ScenarioSpreadJS v19.2 通过新增方案支持进一步扩展了「模拟分析」能力。方案允许用户保存命名的输入值集合将其应用到工作簿重新计算相关公式并快速对比不同的业务结果。与 Excel 中按工作表划分作用域的模型不同SpreadJS 的方案是工作簿级别的这使其在现代电子表格应用以及未来的共享视图工作流中更加灵活。方案可以跨越多个工作表跟踪用于还原操作的基础值在插入、删除、移动或排序行列时更新已存储的引用并可参与工作簿序列化。开发者可以使用方案管理器 API 获取、设置、应用、还原、移除和激活方案。激活「方案模式」后后续的单元格编辑会被自动捕获到方案中让终端用户创建方案更加轻松。方案面板与设计器支持设计器新增了方案管理 UI用户可以通过熟悉的界面查看、应用和管理方案。这让业务用户无需编写代码即可使用模拟分析来对比不同计划、预测、预算或备选假设。数据工作表、单元格与表格绑定到 DataManagerSpreadJS v19.2 强化了工作表绑定与 DataManager 之间的连接。工作表级绑定、单元格绑定、表格绑定路径table binding path以及表格绑定现在都可以使用由 DataManager 提供的数据为复杂的电子表格应用带来更统一的数据模型。这减少了重复的数据管道代码也使得「业务数据由 DataManager 集中管理、同时通过电子表格 UI 呈现与编辑」这类应用更容易构建。TableSheet 排序与筛选 APITableSheet 现在为排序和筛选操作提供了 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)数据图表DataChartsDataCharts 日期坐标轴DataCharts 现在为 BI 和分析场景提供了更丰富的日期坐标轴行为。日期字段既可以按原始日期使用也可以分组为派生的日期粒度如年、季度、月或日。坐标轴渲染既可以使用连续日期刻度也可以使用有序类别刻度让开发者对数据分组和视觉呈现都拥有控制权。这让 DataCharts 更适合时间序列分析、财务仪表盘、销售趋势报表以及其他以日期为驱动的可视化场景。DataCharts 网格绑定Trellis BindingSpreadJS v19.2 为 DataCharts 新增了网格绑定Trellis Binding也就是通常所说的「小倍数图small multiples」。现在可以基于行和列的分类字段将单个数据集拆分为重复排列的多个图表面板从而更容易在地区、产品类别、部门、年度、季度等维度之间对比数值。网格绑定可适用于多种图表类型并支持行绑定、列绑定、多级分组、共享坐标轴或每个单元格独立坐标轴、空单元格处理以及针对网格表头和网格线的样式选项。DataCharts 正负值配色DataCharts 现在可以为柱形、条形和面积类可视化分别设置正值和负值的颜色。这让差异值、盈亏、现金流以及其他高于或低于基准线的数值更容易一眼读懂。DataCharts 线条样式Line Aspect折线图、面积图、范围面积图、堆积面积图、百分比堆积面积图、雷达图以及填充雷达图等 DataCharts 获得了更丰富的线条样式选项。开发者可以在受支持的情况下选择默认、样条spline、阶梯step和贝塞尔Bezier等渲染方式让图表更贴合预期的分析风格和类 Excel 的输出效果。DataCharts 其他增强本次发布还为空间受限时的绘图区与图例新增了自定义布局行为将颜色编码与详细信息编码分离以让图表配置更清晰并扩展了 DataCharts 各图表类型的配置覆盖范围。ReportSheet报表生成事件与临时文本ReportSheet 现在提供了围绕报表生成过程的事件并支持在报表生成期间显示临时文本。这些改进帮助开发者在报表生成可能耗时较长的应用中提供更清晰的加载反馈。工作表与 ReportSheet 水印水印增强同样适用于 ReportSheet 场景让开发者对文档状态标识和报表呈现拥有更强的控制力。GanttSheetGanttSheet 支持进度线Progress LineGanttSheet 新增进度线支持帮助项目经理和应用用户基于选定的状态日期status date直观呈现项目状态。该特性包含状态日期显示、符合条件任务的进度点以及贯穿图表区域的连接进度线。这让 GanttSheet 在项目跟踪、进度评审和状态汇报等工作流中更加实用。UI 与交互增强增强项说明预览类 Excel 的筛选按钮位置改进了筛选行为采用更贴近 Excel 的策略将筛选按钮放置在所选区域的第一行。这可以减少那些期望所选区域第一行作为表头行的用户产生的困惑。在设计器中重新应用筛选设计器新增对类 Excel「重新应用筛选Reapply」的支持允许用户在底层数据发生变化后重新应用已有的筛选和排序条件。这包括工作表筛选、表格筛选以及按颜色排序等筛选菜单中的排序状态。支持 commitInput 命令新增一个内置命令可在不移动焦点的情况下提交单元格编辑器的输入从而支持「按 Enter 仅保存输入」这类自定义键盘工作流。commandManager.setShortcutKey(commitInput, GC.Spread.Commands.Key.enter, false, false, false, false);触摸选择指示器自定义为触摸选择指示器提供了自定义入口让移动端/触摸场景能更好地匹配产品 UX 要求。框架支持支持 Angular 22SpreadJS 已完成全面测试并确认与 Angular 22 兼容。开发者可以放心升级 Angular 应用而无需修改任何 SpreadJS 集成代码。
