Spread.NET 表格控件 V13.0 的更新内容:

  • 增强形状(Shape)引擎,与 Microsoft Excel® 100% 兼容
  • 增强形状(Shape)属性的绑定机制,可将形状的属性绑定到特定单元格中,设计更多可交互式形状
  • 增强复制粘贴,确保 Microsoft Excel® 和 Spread.NET 之间的数据无缝衔接
  • 适用于表数据筛选的切片器
  • 用于自定义数据可视化的 VisualFunctions
  • 增强对 XLOOKUP 和 XMATCH 的函数支持
  • 公式值自动格式化
  • 当页面向下滚动时,自动将行标题宽度调整为文本大小
  • IWorksheet 中的 BackgroundImage
  • 编辑公式会向表单元格数据插入结构化引用
  • 新的 BeforeRightClick 事件
  • 为 WinForms 控件资源管理器中添加了新示例

增强形状(Shape)引擎,与 Microsoft Excel® 100% 兼容

Spread.NET 在新版本中增强了形状引擎,该引擎与 Microsoft Excel® 100% 兼容,和此前的形状引擎相比,新引擎与 Excel 的兼容性更高,功能也更完善。

1. 新的形状引擎支持所有 Excel 形状:

Spread支持所有Excel形状

(Spread支持所有Excel形状)

2. 新引擎支持多组形状组合,可用于创建图表、结构图和流程图:

在Spread中创建的流程图示例

(在Spread中创建的流程图示例)

3. 新的形状引擎可用于创建丰富的交互式界面,比如一个汽车保险索赔示例:

使用 Spread 形状创建的汽车保险索赔示例

(使用 Spread 形状创建的汽车保险索赔示例)

要使用这个形状引擎,可以通过“属性网格”启用它:

启用形状引擎

(启用形状引擎)

也可以直接通过代码启用:

【C#】

fpSpread1.Features.EnhancedShapeEngine = true;

【VB】

fpSpread1.Features.EnhancedShapeEngine = True

增强形状(Shape)属性的绑定机制,以设计更多交互式形状

Spread.NET 形状属性的绑定机制在本次发布中得到增强,支持将 AutoShapeType、TextEffect、Fill、Line、Top、Left、Height 和 Width 等属性绑定到特定的单元格中,用来设计更为丰富的交互式界面。同时,利用单元格公式的计算结果,还可以动态更新这些属性。

举例:

在上面的汽车保险索赔示例中,各形状的详细属性在 Sheet2 中如下所示:

塑造汽车保险索赔示例的属性绑定

(塑造汽车保险索赔示例的属性绑定)

通过代码来绑定形状的属性:

【C#】

 IWorkbook workbook = fpSpread1.AsWorkbook(); IShapes shapes = workbook.Worksheets[0].Shapes; // bind shape properties to cells shapes["Front"].Bindings.Add("Left", "Sheet2!B2"); shapes["Front"].Bindings.Add("Top", "Sheet2!C2"); shapes["Front"].Bindings.Add("Width", "Sheet2!D2"); shapes["Front"].Bindings.Add("Height", "Sheet2!E2"); shapes["Front"].Bindings.Add("Line", "Sheet2!F2"); 

【VB】

 Dim workbook As IWorkbook = fpSpread1.AsWorkbook Dim shapes As IShapes = workbook.Worksheets(0).Shapes   bind shape properties to cells shapes("Front").Bindings.Add("Left", "Sheet2!B2") shapes("Front").Bindings.Add("Top", "Sheet2!C2") shapes(Front").Bindings.Add("Width", "Sheet2!D2") shapes("Front").Bindings.Add("Height", "Sheet2!E2") shapes("Front").Bindings.Add("Line", "Sheet2!F2") 

增强复制粘贴,确保与 Microsoft Excel® 的数据无缝衔接

Spread.NET 在新版本中的复制/粘贴功能得到了全面加强,确保与 Microsoft Excel® 的数据无缝衔接。

可通过如下控制面板,启用此功能:

使用属性面板启用FpSpread.Features.RichClipboard

(使用属性面板启用FpSpread.Features.RichClipboard)

或者,您也可以直接在代码中设置:

【C#】

fpSpread1.Features.RichClipboard = true;

【VB】

fpSpread1.Features.RichClipboard = True;

当启用复制粘贴的增强选项时,您可以享受如下功能:

  • 向 Excel 复制 Spread 设计器中选定的范围和单元格(包括源格式、公式和值)
  • 从 Excel 中粘贴 Shape、Picture、Slicer (包括格式、样式、效果和文本内容)到 Spread 设计器中

适用于表数据筛选的切片器

Spread.NET 新增了适用于表数据筛选的切片器。

您可以直接向 Spread 设计器导入、导出带有切片器的 Excel 文件,也可以直接在 Spread 设计器中插入切片器:

Spread Designer中的插入切片器

(Spread Designer中的插入切片器)

插入 Spread 切片器时弹出的对话框:

插入切片器的对话框

(插入切片器的对话框)

通过代码显示“ 插入切片器”的对话框:

【C#】

 SlicerInsertForm dlg = new SlicerInsertForm(table, new Point(25, 25)); dlg.ShowDialog(this); 

【VB】

 Dim dlg As SlicerInsertForm = new SlicerInsertForm(table, new Point(25, 25)) dlg.ShowDialog(Me) 

Spread切片器的作用与Excel相同,都是用来显示表列中的唯一值,并通过快速筛选整张表来定位该值所在的行:

Spread为“国家/地区”表列创建的切片器

(Spread为“国家/地区”表列创建的切片器)

用于自定义数据可视化的 VisualFunction

Spread.NET 在新版本中新增了一个名为 VisualFunction 的新型自定义计算功能。

使用这个功能,您可以定义一个自定义公式函数,用来在单元格中绘制内容或应用格式,使用此功能在单元格中绘制内容类似于创建迷你图,但比创建迷你图还要简单。

此功能与 Spread 新的计算引擎和新函数类的 VisualFunction 集成在了一起。

举例:

您可以自定义绘制 QR 代码的 VisualFunction:

显示QR代码的VisualFunction

(显示QR代码的VisualFunction)

在公式中引用 VisualFunction 时,需要在 VisualFunction 的名称前使用前缀“ VF. ” ,并传入参数。

如上面的示例中,VisualFunction QRCODE 接收了两个参数(B1,C1),因此将 B1 到 C1 单元格中 Spread.NET 的网址生成了一个标准 QR 码。

增强对 XLOOKUP 和 XMATCH 的函数支持

Spread.NET 增强了对 XLOOKUP 和 XMATCH 函数的支持,这些函数目前仅在 Microsoft Excel® 的 Office Insiders 版本中可用。

和旧的 LOOKUP、VLOOKUP、HLOOKUP 和 MATCH 相比,XLOOKUP 和 XMATCH 更好,原因如下:

  • XLOOKUP 和 XMATCH 可以执行垂直或水平查找(或在嵌套时都执行),具体取决于 lookup_array 的方向。
  • 即使没有对数据进行排序,XLOOKUP 和 XMATCH 仍可以执行具有正确结果的非精确查找(与 HLOOKUP / VLOOKUP / MATCH 不同)。
  • XLOOKUP 和 XMATCH 默认执行精确匹配查找(与 LOOKUP / HLOOKUP / VLOOKUP / MATCH 不同)。
  • XLOOKUP 不需要引用包含 _ lookup_array _ 和 _ return_array _ 的全部范围,仅需引用特定范围即可。因此就计算效率而言,XLOOKUP 可以比 HLOOKUP / VLOOKUP 更高效。
  • 因为使用了范围引用,XLOOKUP 在插入、删除和移动 _ lookup_array _ 或_ return_array _ 的列、行时会自动调整。
  • Spread.NET 中对 XLOOKUP 和 XMATCH 进行了增强,支持 _search_mode 0 - All_ (它用来返回数组中的所有匹配项,防止当启用动态数组时,这些项因为溢出到相邻的单元格中而没有被匹配到)。

从上面的最后一点可以看出,启用动态数组功能时,为了避免遗漏数据,需要借助 _ search_mode 0-All _ ,而只有 XLOOKUP 和 XMATCH 才能支持它。

在Spread功能区中启用“动态数组”

(在Spread功能区中启用“动态数组”)

通过代码启用动态数组:

【C#】

pSpread1.AsWorkbook().WorkbookSet.CalculationEngine.CalcFeatures = GrapeCity.Spreadsheet.CalcFeatures.DynamicArray;

【VB】

fpSpread1.AsWorkbook().WorkbookSet.CalculationEngine.CalcFeatures = GrapeCity.Spreadsheet.CalcFeatures.DynamicArray

公式值自动格式化

Spread.NET 加入了公式值自动格式化的功能:

  • 使公式函数的运算结果自动匹配当前的单元格样式(类似 Microsoft Excel)。
  • 引用其他单元格时,将自动使用所引用单元格的样式。
  • 此功能必须启用时才会生效(确保向后兼容)。

Spread.NET 提供的公式值自动格式化功能与 Excel 类似,如使用 DATE 函数计算日期时,计算结果将自动设置为日期格式。

Spread.NET 的公式值自动格式化,可以根据原始单元格格式自动格式化公式值。

举例:

在单元格 A1 中键入 1500.65,然后应用“ 货币”格式,则该单元格将显示为 $ 1500.65。此时,在单元格 A2 中键入公式“= A1”,则单元格 A2 的值也将显示为货币格式。

如果将单元格 A2 的“单元格格式”更改为会计专用,则单元格 A2 中的值将更新为 “ 会计专用格式”而不是“ 货币格式”。

此时,在单元格 B1 中键入公式“= A1”,然后将公式向下拖动到单元格 B2 中,则这两个单元格的格式均为货币类型,因为 B1、B2 单元格均引用自 A1,而 A1 的单元格格式为货币:

根据引用单元格格式自动格式化公式值

(根据引用单元格格式自动格式化公式值)

注:为了向后兼容,此功能默认未启用,使用时必须通过 IWorkbook.Features 来启用:

【C#】

IWorkbook.Features.AutoFormattingworkbook.Features.AutoFormatting = True

【VB】

IWorkbook.Features.AutoFormattingworkbook.Features.AutoFormatting = True

自动调整行标题的宽度

Spread.NET 可以动态调整行标题的大小,当您向下滚动表格时,该行标题会自动调整以显示完整的行号:

向下滚动时自动调整行标题宽度

向下滚动时自动调整行标题宽度

向下滚动时自动调整行标题宽度

(向下滚动时自动调整行标题宽度)

此功能的应用场景是:在数据量非常大的电子表格中,用户向下滚动时可以查看完整的行索引号。

IWorksheet 中的 BackgroundImage

Spread.NET 现在使用新的重载方法 SetBackgroundPicture 在 IWorkbook 界面中为工作簿设置背景图像:

【C#】

 void IWorksheet.SetBackgroundPicture(string filename, [string contentType = null]) void IWorksheet.SetBackgroundPicture(System.IO.Stream imageStream, string contentType) 

【VB】

 Sub SetBackgroundPicture(filename As String, Optional contentType As String = Nothing) Sub SetBackgroundPicture(imageStream As System.IO.Stream, contentType As String) 

 注:背景图片必须从文件或数据流中加载,并且指定的文件类型必须是:

  • 图片/ jpeg
  • 图片/ png
  • 图片/ tiff
  • 图片/ gif
  • 图片/ Bmp

编辑公式会向表单元格数据插入结构化引用

编辑公式将结构化引用插入到表格单元格中

(编辑公式将结构化引用插入到表格单元格中)

使用 Spread 中的 FormulaTextBox 控件编辑公式时,可以选择单元格、表格列或整个表格,并自动插入结构化引用。

注:这个功能可适用于整个表的列引用和整个表引用,但是对于使用 [@ColumnName] 语法的单元格引用,其引用的单元格必须与表单元格位于同一行中,如果表单元格在另一行中,则只能使用常规单元格引用。

新的 BeforeRightClick 事件

Spread.NET 提供了一个新事件 BeforeRightClick,该事件用于:最终用户右键单击电子表格内部时,可以通过事件、API 来自定义上下文菜单。

您可以在此事件中调用 API(如 FpSpread.HitTest)实现:定位光标下的单击位置和对象,覆盖默认行为,并自定义上下文菜单(包括样式、自定义功能),BeforeRightClick 事件为 Spread 设计器的右键单击操作,带来了更为个性化、更加灵活的功能。

为 WinForms 控件资源管理器中添加了新示例

Spread.NET 在本次更新中,加入了一些令人兴奋的新示例,这些示例可以在C#和VB中运行,并且他们已经包含在 Spread.NET 的安装程序中:

1. 汽车保险索赔示例

汽车保险索赔展示了:如何获取包含 VBA 代码和自定义形状的 Excel 工作簿(* .XLSM),并将其转换为 .NET WinForms 应用程序(Spread 设计器),该应用程序可以将新的命令(包含用户插入的 VBA 宏和其他修改项目)导出至 Excel 中。

2. 动态数组示例

该示例展示了:如何使用 Spread 的动态数组功能,以及使用动态数组的示例。您可以浏览到每个带有新公式函数 FILTER、RANDARRAY、SEQUENCE、SINGLE、SORT、SORTBY 和 UNIQUE 的工作表。

3. 公式跟踪示例

该示例展示:如何使用 Spread 新的 API 跟踪公式的源、从属单元格和引用单元格。

4. 自定义函数功能示例

该示例展示:如何实现返回数组或计算结果的自定义计算函数,该函数可与数组公式或新的动态数组功能(如果已通过 IWorkbookSet.CalculationEngine.CalcFeatures 启用)一起使用。

5. XLOOKUP 和 XMATCH 函数功能示例

该示例展示:如何使用新的 XLOOKUP 和 XMATCH 计算函数以及增强的 search_mode 0_ 来返回数组中的所有匹配项。

6. 自定义数据可视化示例

示例显示了如何创建一个新的 VisualFunction 在单元格内绘制 QR 码。

7. 切片器示例

显示了如何使用 Spread 切片器过滤工作表中的数据,以及如何设置切片器样式。

8. 形状引擎功能示例

显示了如何使用 Spread 的增强形状引擎创建流程图。