找回密码
 立即注册

QQ登录

只需一步,快速开始

alizee10251 讲师达人认证 悬赏达人认证 SpreadJS 开发认证

银牌会员

98

主题

150

帖子

2758

积分

银牌会员

积分
2758

活字格认证活字格高级认证微信认证勋章

alizee10251 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
银牌会员   /  发表于:2019-6-4 10:49  /   查看:2615  /  回复:0
本帖最后由 Fiooona 于 2019-8-15 16:52 编辑

加入动态数组,让公式运算更具效率
Spread.NET 是一个在功能和布局上与 Excel 高度类似的 .NET表格控件,目前已广泛应用于财务、预算、工程、统计等领域的信息系统开发中,通过强大的数据处理引擎和灵活的数据可视化呈现,为商业表单控制面板提供了丰富、有效的内容信息。


如今,Spread.NET 的全新版本 V12.0 Update1 已经正式发布,该版本包含了诸多功能亮点,如动态数组支持(可大幅简化计算公式,提高公式运算效率)、公式追踪、交替样式支持、与VSTO 类似的基于 1 的索引、类似 RTD 的异步函数等。


在列举 Spread.NET V12.0 Update1 的全部功能之前,请下载最新安装程序,以便同步体验!




动态数组支持:大幅简化计算公式,提高公式运算效率

Excel 2019 推出了动态数组函数,用于简化复杂计算公式:使用动态数组,返回值将自动“输出”到相邻单元格中(未使用的)。用户只需编写一个简单的公式,而不是编写复杂的数组公式就可解决多单元格问题。

image.png735792541.png
Excel动态数组功能预览

作为一款与 Excel 高度类似的表格控件,在Spread.NET V12.0 Update1 中,也加入了如 Excel 动态数组一样的功能。

如何在 Spread.NET 中使用动态数组

首先,需要在 Spread 设计器中启用动态数组——默认情况下,动态数组不会自动启用,您需要通过以下方式之一显式启用它们:在Windows窗体的 Spread 设计器(Spread Designer)中,有一个新的“公式”选项卡,如下图:

image.png405027160.png
如何在 Spread.NET 中使用动态数组


在“计算引擎”菜单中选中“动态阵列”框,以启用对动态阵列的支持。

除此之外,您也可以使用代码(通过调用 CalculationFeatures函数),启用动态数组:

[C#]
fpSpread1.AsWorkbook().WorkbookSet.CalculationEngine.CalcFeatures= GrapeCity.Spreadsheet.CalcFeatures.DynamicArray;

[VB]
FpSpread1.AsWorkbook().WorkbookSet.CalculationEngine.CalcFeatures= GrapeCity.Spreadsheet.CalcFeatures.DynamicArray

举例:键入类似“= {1,1,2,2,3}”的公式,该公式硬编码水平溢出的数组值如下图:

image.png494214171.png
水平阵列使用','分隔符水平溢出

键入“= {1; 1; 2; 2; 3}}”这样的公式,它硬编码垂直溢出的数组值如下图:

image.png607027282.png
垂直数组使用';' 分隔符垂直溢出

键入“= {1,1,2,1,3;1,1,2,1,3; 1,2,3,2,5; 1,2,3,2,5; 1,2 ,2,2,5}“ 这样的公式,其硬编码水平和垂直溢出的二维数组值如下图:

image.png310250853.png
二维数组垂直和水平溢出

在相邻空白单元格中放置值的行为称为“填充(Spilling)”,当选择溢出范围内的任何单元格时,Spread.NET 会用浅蓝色边框,指示公式的“填充范围”,并且FormulaTextBox将单元格公式显示为已禁用且不可编辑。

Spread.NET动态数组的强大功能

Spread.NET 现在支持六种动态数组函数:

l  SEQUENCE和RANDARRAY函数可以生成顺序或随机数据的数组
l  FILTER、SORT、SORTBY和UNIQUE函数主要用于筛选、排序、删除重复项等功能

使用动态数组,当您的数据发生变化时,设计器将自动调整大小并重新计算,让您的数据分析工作前所未有的简单。

Spread.NET动态数组的使用场景

仅使用带有 RANDARRAY 的SORTBY,即可为列表创建随机排序:

image.png800205383.png
使用SORTBY和RANDARRAY随机排序值列表

仅使用SEQUENCE和NOW函数,实现每10分钟创建一个时间表计划标题:

image.png435118712.png
使用SEQUENCE安排每隔十分钟

仅使用三个公式和TRANSPOSE、SORT、UNIQUE和SUMIFS函数,直接在单元格中创建数据透视交叉分析表:
image.png255838317.png
仅使用三个公式创建的数据透视交叉分析表


Spread.NET设计器增强:加入公式追踪功能

在使用公式时,有时需要了解公式中引用了哪些单元格的数据,这就涉及到公式追踪的操作。在Spread.NET V12.0 Update1 中,这些用于公式追踪的工具可以在TracePrecedents,Trace Dependents和RemoveArrows中的Formula Auditing组下找到:

image.png27402342.png


新增如Excel 般的行、列交替样式支持

Spread.NET V12.0 Update1 加入了如Excel 般的行、列交替样式支持,为交替行或列(通常称为色带)添加颜色,以便使工作表中的数据更易于浏览,此功能包括对内置 Excel 样式和主题的支持,如颜色渐变和图案填充。

image.png605365600.png

新增如 Excel 般的行、列交替样式支持

实现方法:当需使用交替样式时,直接调用 AlternatingRows类包装的新接口即可,或者您也可以直接调用GrapeCity.Spreadsheet.dll的新公共接口来创建交替的行和列样式。

与 VSTO 类似的基于 1 的索引:更易于 VBA 代码移植

通过创建IWorkbook,Spread.NET 为所有 GrapeCity.Spreadsheet.IWorkbookAPI(如Microsoft Excel® VSTO API)提供了与 VSTO 类似的基于 1 的索引,这样做的目的是:可以轻松地将 Excel VBA 代码或旧的 Spread COM 代码(基于 1 的行和列索引部分)移植到 .NET 平台下(后者曾一直使用基于 0 的索引来支持以前版本中的所有 API,以实现 CLS) 。

Spread.NET为何要使用基于1的索引

鉴于 Microsoft Excel ® 支持Visual Studio Tools for Office(VSTO)的Visual Basic for Applications(VBA)对象模型中基于1的索引,而 Spread.NET 的常见使用场景便是从支持宏的Microsoft中创建使用VBA和VSTO的电子表格应用程序。所以,Spread.NET使用基于 1 的索引,将更易于 VBA 代码移植。

实现方法:只需一次调用,即可获得基于1的索引对象:

[C#]
IWorkbook iwb= WorkbookSet.CreateBase1Object(fpSpread1.AsWorkbook());
[VB]
Dim iwb AsIWorkbook = WorkbookSet.CreateBase1Object(FpSpread1.AsWorkbook())

全新的异步函数和属性,便于更新实时数据

Spread.NET 对创建自定义计算功能提供了丰富的支持,如使用AsyncFunction类创建类似RTD函数的异步函数。RTD 函数自 Excel 2002 引入,主要用于查看和更新实时数据。

在Spread.NET V12.0 Update1 中,您可以创建继承自AsyncFunction的自定义计算函数,实现对异步计算的支持,还可以通过各种FunctionAttributes来指示特殊函数的行为,如波动率或返回数组值。

如 Excel 般的“取消选择”

在 Excel 中,使用CTRL键配合鼠标或键盘可以选中或删除特定的单元格。而在Spread.NET V12.1中也将提供该功能, 这意味着您可以轻松地选择一系列单元格以应用某些更改,对于需要选择大范围数据的使用场景来说,这个功能将非常实用!

新的 F4 键行为

Excel 支持在编辑公式引用时使用F4键,在绝对和相对列和行引用之间切换引用。这个功能在Spread.NET 中也得以实现,这种细节处更新可以使具有特定相对和绝对要求的公式比以前更易实现。

以上就是 Spread.NET V12.0 Update1 的主要新功能介绍,如需了解更多,请前往Spread.NET产品官网

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部