工作簿

从右到左的文档模式和文本方向,支持西亚语言用户使用

SpreadJS 的标准方向是从左到右,但在此新版本中,我们正式添加了从右到左的方向,可以通过将工作表的RightToLeft选项设置为true来启用此功能。

表格(Table)绑定数据管理器中的表,实现更高的性能和容量

在 V18 中,我们增强了表数据绑定功能,以支持绑定到数据管理器中的表。这意味着现在可以将工作表的数据和公式添加到数据管理器表中,以使数据更加集中以供在 SpreadJS 的其他区域使用。此功能还支持绑定数据管理器表中的特定列或自动生成列。

此外,导入 Excel 文件时,可以使用新的导入标志将工作表转换为数据管理器表,大幅提升导入的性能:

测试用例:打开和保存带有海量公式表格的 Excel 文件

  • 文件大小:40 MB
  • 包含 18 个表格
  • 共计数据行数 15 万行

数据区域(DataRange)

为了帮助实现数据管理器表绑定,新的数据区域提供了完全控制特定工作表范围区域并将行/列坐标转换为数据表坐标的能力,使用户能够更轻松地专注于应用程序的业务逻辑。

功能介绍及核心点

  • 数据驱动的单元格区域,支持绝大部分的原生单元格区域能力,例如表头、样式、合并
  • 支持在普通工作表中嵌入集算表、甘特图及报表等以数据为底层各类特殊区域,布局灵活自由
  • 提供全面的接口 API,供用户扩展
  • 支持导入导出 Excel / SJS / SSJON
  • 相对普通单元格区域,具备更高的性能

示例及主要接口

对角线单元格类型

SpreadJS 中添加了一种新的单元格类型,允许我们在单元格内插入对角线。

这对于设计表格标题或报告中的单独区域非常有用。这些单元格可以显示由对角线分隔的不同部分的多个文本项:

这些单元格类型还支持许多不同的属性,包括值类型、显示规则、线条样式、文本方向、文本换行和剪切以及从右到左的布局。

单元格是否可编辑状态

新版本添加了一个名为 allowEditInCell 的新属性,用于防止编辑单元格。如果将此属性设置为 false,则在用户双击单元格或使用键盘开始编辑时,单元格将无法进入编辑模式。如果只能使用 ComboBox 或 CheckBox 等单元格类型更改单元格,则此功能非常有用。

使用 Shift + 鼠标滚轮进行水平滚动

在此版本之前,SpreadJS 中的垂直滚动是使用鼠标滚轮或垂直滚动条进行的,但水平滚动只能使用水平滚动条完成。在此版本中,我们添加了使用 Shift + 鼠标滚轮进行水平滚动的功能。

通过命令更改编辑器状态

SpreadJS 中添加了两个新命令,允许我们更改编辑器状态。这些命令是:

  • StartEdit:用于使用编辑模式编辑活动单元格
  • ChangeEditorStatus :用于在编辑单元格时在输入模式和编辑模式之间切换编辑器状态

搜索单元格批注(Comments)

SpreadJS 中现有的搜索功能支持以下内容:

  • 单元格值
  • 单元格公式
  • 单元格标签

在 V18 版本中,搜索功能现在支持在工作表中的批注内进行搜索。通过此增强功能,SpreadJS Designer 组件搜索对话框现在还支持搜索单元格批注和标签。

getUsedRange API 支持 Tag 类型

为了支持搜索单元格标签,getUsedRange API 已更新为通过GC.Spread.Sheets.UsedRangeType枚举中的标签选项支持标签类型。

使用键盘选中/取消选中筛选项

添加了新的键盘快捷键,用于与 SpreadJS 中的过滤器进行交互。当用户打开过滤器时,他们可以使用以下键与其进行交互:

  • 空格键:当列表聚焦时,选中/取消选中列表中的项目
  • 左箭头键:当列表聚焦时,折叠列表中当前项目的所有子项目
  • 右箭头键:当列表聚焦时,展开列表中当前项目的所有子项目
  • 向上和向下箭头键:在过滤器列表框之外,这将切换过滤器对话框中的焦点

ComboBox CellType 支持绑定数据源

SpreadJS 中的 ComboBox CellTypes 现在支持绑定到表列。

该表可以作为数据管理器中的数据表或公式的结果出现。

已向 ComboBox CellType 添加了新的dataBinding方法来支持此功能:

表格调整大小事件取消选项

为了通过设置表格的行数或列数限制来控制表格大小调整,TableResizing事件现在提供了一个Cancel参数。以编程方式设置是否停止当前的调整大小操作,默认情况下设置为 false。

 

数据透视表插件

更改数据源

数据透视表现在支持更改数据源并将现有布局信息同步到新数据源。

updateSource方法用于更改当前数据源,当需要添加更多行或修改现有数据集时很有用。这也可以通过 Designer UI 来实现:

在单个字段中显示小计

与 Excel 类似,现在可以在数据透视表中显示各个字段的小计信息。可以使用subtotalVisible方法控制这些小计的可见性:

筛选对话框键盘操作支持

与 SpreadJS 中的标准过滤器对话框一样,数据透视表的过滤器对话框现在也支持键盘操作:

  • Tab - 将焦点切换到下一个项目
  • Shift + Tab - 将焦点切换到上一个项目
  • Up/Down Arrow - 将焦点切换到上一个/下一个子项
  • Left/Right Arrow - 展开或折叠子项
  • Space - 在列表中选中/取消选中项目,或执行当前选择选项
  • Enter - 保存当前设置或者执行焦点所在的操作项
  • Esc - 关闭当前对话框


(使用 Tab / Shift + Tab)


(使用 Up / Down)

 

报表插件增强 / ReportSheet

图表支持

浮动图表

浮动图表是显示图表的标准方式,其位置基于左上角单元格,图表浮动在单元格上方。这些图表支持绑定到模板表中的表格或数据管理器中的表格。

模板单元格图

单元格图表是设置在模板工作表中单元格内的图表,类似于迷你图。这对于为特定数据字段设置多个图表很有用,例如为不同区域设置图表:

分页

这些图表还支持数据分页,允许您将数据分成可循环浏览的页面。

全部展开/折叠

报告表的展开和折叠功能已得到增强,支持展开和折叠特定单元格的所有单元格以及相关单元格。

在数据源面板中查找字段

创建 ReportSheet 时,左侧将显示一个面板,其中显示 DataManager 中所有已注册的表。在 V18 版本中,数据源面板现在支持搜索字段:

向导中的更多聚合函数选项

SpreadJS ReportSheet Wizard 可帮助您在易于使用的 UI 中创建报告和配置报告设置。在 V18 版本中,我们添加了更多聚合选项,特别是为了帮助分组和交叉报告:

设计模板的容器支持

在创建报表模板时,现在可以将容器添加到特定范围,帮助用户轻松设计报表。这些容器有三种不同的类型,所有字段都逐一设置到容器中:

  • 列表 - 字段从左到右设置
  • 组 - 字段从左到右设置
  • 交叉 - 字段从上到下设置

一旦设置了字段,就会自动生成字段标签和样式。

字段值编辑器的下拉选择功能

在 V18 中,SpreadJS 现在支持通过设计器中字段值编辑器中的下拉框选择 ReportSheet 字段的参数。这对于具有参数可供选择的值很有用:

一旦设置了字段,就会自动生成字段标签和样式。

 

计算引擎(公式函数)

新的聚合函数(GROUPBY、PIVOTBY 和 PERCENTOF)

SpreadJS V18 支持新的聚合函数:

  • GROUPBY:通过按行字段分组并聚合相关值来创建数据摘要。
  • PIVOTBY:通过沿两个轴分组并聚合相关值来创建数据摘要。
  • PERCENTOF:对第一个参数求和,然后除以第二个参数的和。这对于GROUPBY和PIVOTBY特别有用,因为它可以返回百分比。

函数引用

函数引用功能(也称为 Eta 简化 Lambda 函数)通过消除不必要的抽象来简化函数,当函数没有进一步的操作要对其参数执行时。这使我们能够在可能的情况下使用缩写语法。这可以通过定义自定义名称来实现,其内容包含公式名称,例如“SUM”:

这种类型的简化也可以与 LET 函数和 LAMBDA 函数一起使用。

 

表格设计器 / Designer

支持搜索不可见范围

设计器中的“查找/替换”对话框已得到增强,添加了“忽略隐藏”选项以支持搜索不可见范围。设置为 true 时,搜索时将忽略隐藏范围,设置为 false 时将包括隐藏范围:

 

框架

运行时和设计 Vue Wrapper TypeScript 支持

SpreadJS 的 Vue 包装器现在包含一个index.d.ts文件,以使用 Vue 3 支持 TypeScript。

Angular 18 支持

SpreadJS 现在已发布支持 Angular 18。

历史版本

查看更多关于 SpreadJS 纯前端表格控件的历史版本。