GcExcel V8.0 新版本特性丰富,包括:数据导入方面,可从多种数据源(如自定义对象、DataTable 等)导入,为 IRange.ImportData (..) 新增重载;假设分析上,通过 IWorksheet.Scenarios 接口支持 “方案” 功能,可进行多种操作且受保护工作表也能编辑;数据透视表能绑定表格数据源,IPivotCaches.Create 支持传 ITable 参数,新增管理 API 并支持时间线切片器;其他特性有可用多种字符串格式设颜色,页眉页脚支持页码计算运算符,导出 PDF 和图像支持图案填充。SpreadJS 功能兼容方面,自动合并单元格有新 API 可检索、添加自动合并信息;迷你图导出扩展 IMAGE 函数支持图像迷你图参数;单元格装饰支持相关功能,IRange 接口有新属性;绑定数据选项新增 IncludeBindingSource 属性控制绑定数据导出 。
GcPDF V8.0 新版本特性为:优化 PDF 文档体积,通过优化对象流处理方式和新的 SavePdfOptions 类控制保存,可减小文件大小、提高效率;优化字体格式,添加 PdfFontFormat 属性设置字体格式编码类型;导出图像时可通过 SaveAsImageOptions 的 DrawAnnotationFilter 属性控制包含注释;编辑时可通过 RedactOptions 类的 CopyImagesOnRedact 属性控制图像编辑行为。
GcWord V8.0 新版本增强了动态占位符功能,增加对 PAGE、PAGEREF 等字段的支持和更新,各字段有对应...FieldOptions 类可访问参数和修饰符,FieldFormatOptions 类支持格式化属性,可使用新方法更新字段。
GcExcel V8.0 新版本特性
- 数据导入:可从多种数据源(如自定义对象、DataTable 等)导入,为IRange.ImportData(..)新增重载。
- 假设分析:通过IWorksheet.Scenarios接口支持 “方案” 功能,可创建、管理方案,受保护工作表也能编辑。
- 数据透视表:能绑定表格数据源,IPivotCaches.Create支持传ITable参数;新增管理 API,支持时间线切片器。
- 其他:可用多种字符串格式设颜色;页眉页脚支持页码计算运算符;导出 PDF 和图像支持图案填充。
- SpreadJS 功能兼容:
- 自动合并单元格:新 API 可检索、添加自动合并信息。
- 迷你图导出:扩展IMAGE函数支持图像迷你图参数。
- 单元格装饰:支持相关功能,IRange接口有新属性。
- 绑定数据选项:保存选项中新增IncludeBindingSource属性控制绑定数据导出。
从对象集合和数据表导入数据
在商业应用程序中以编程方式处理 Excel 工作表时,一项常见任务是从不同数据源导入数据,比如 C\#/.NET/Java 中的类和对象、关系数据库、.NET 控件等。在 V8.0 版本中,增加了从以下类型数据源导入数据的功能:
- 简单可枚举对象、二维数组(仅适用于.NET)、多维数组
- 交错数组、自定义对象、弱类型集合中的自定义对象
- 带有自定义列的自定义对象、未知类型自定义对象的数据
- 动态对象、DataTable 或 DataView(仅适用于.NET)
- 选定的数据列、LINQ 结果(仅适用于.NET)
为 IRange.ImportData (..) 方法添加了新的重载,现在可以将数据源中的数据导入到指定区域。以下重载方法根据数据源来接收参数:
- ImportData (IEnumerable, DataImportOptions) 方法:从数据源将数据导入到指定区域。
- ImportData (DataTable, DataImportOptions) 方法:从数据表将数据导入到指定区域。
DataImportOptions 参数是一个枚举类型,用于提供处理数据的选项。
在假设分析(What-If)中添加和管理方案
Excel 电子表格中的假设分析是一项强大功能,它能让用户探究某些输入值的变化如何影响工作表中公式的计算结果。在做出关键决策前,这项功能对于预测、规划以及测试不同可能性尤其有用。在上一个版本中,引入了以编程方式向电子表格添加 “单变量求解”(假设分析工具之一)的功能。
为了继续支持在电子表格中添加假设分析,最新版本支持 “方案” 功能。在 Excel 中,方案是为特定单元格保存的一组输入值。通过在不同方案之间切换,你可以查看某些单元格的变化如何影响工作表中的计算结果。
- 新的 IWorksheet.Scenarios 接口有助于在 Excel 电子表格中创建和管理方案。
- 以编程方式应用 / 显示方案:可变单元格的值将应用到工作表中,引用可变单元格的公式将重新计算。
- 删除方案
- 获取方案的可变单元格
- 获取可变单元格的值
- 更改 / 修改方案:为其设置一组新的可变单元格和方案值。
- 锁定方案:防止其他用户修改它。
- 隐藏方案:使某些方案仅对部分用户可见,对其他用户隐藏。
在受保护的工作表上编辑方案:当工作表受到保护时,此功能仍然有效,DsExcel 不会添加额外限制。用户可以根据 IProtectionSettings.AllowEditingScenarios 和 IWorksheet.Protection 属性自定义操作。
将数据透视表直接绑定到表格作为数据源
- 为了最大化数据透视表的有效性和灵活性,需要将其绑定到表格。在处理动态或扩展数据集时,这一点至关重要,因为无需手动更新数据透视表的数据区域。
- 此外,当数据位于表格中时,每列都有定义好的标题,因此数据透视表可以自动使用这些列名来配置数据透视表字段。
- IPivotCaches.Create (object) 方法现在支持将 ITable 作为参数传递。只需定义好表格,并在创建 IPivotCache 对象时将其作为参数传递即可。
以多种字符串格式设置颜色
- 在新版本中,可以使用主题颜色、标准颜色或自定义颜色来自定义单元格、单元格边框、选项卡等的外观。为了应用这些颜色,新版本添加了新的 ColorUtilities 类的 StringToColor 方法。
- 这个 API 有助于使用多种字符串格式添加标准颜色和自定义颜色,包括:
- 颜色名称:预定义的标准颜色名称。例如:"red"。
- RGB:rgb (r,g,b)。例如:"rgb (255,0,0)" 表示红色。
- RGBA:rgba (r,g,b,a)。例如:"rgba (255,0,0,0.5)" 表示透明度为 50% 的红色。
- 十六进制:\#RGB 或 \#RRGGBB。例如:"\#F00" 或 "\#FF0000" 表示红色。
- 带透明度的十六进制:\#RGBA 或 \#RRGGBBAA。例如:"\#F00C" 或 "\#FF0000CC" 表示透明度为 90% 的红色。
支持页码计算运算符
- 新版本现在支持在工作表的页眉和页脚中,对页码和总页数使用 “+” 和 “-” 运算符,无论是导出为 PDF 还是通过物理打印机打印。对于所有遵循 IWorksheet.PageSetup 属性中自定义页眉和页脚的分页输出,此功能均可用。
- 在将多个工作簿作为单个报告打印时,可以根据需要调整页码或总页数(进行加或减操作)。查看以下示例,了解如何将页码和总页数都增加 1。
管理数据透视表的新 API
新版本中支持的数据透视表功能通过新的 API 选项得到了增强:
- HasAutoFormat:在更新数据透视表时,允许自动调整列宽。
- RefreshOnFileOpen:控制打开文件时数据透视表是否应刷新数据透视缓存,以确保信息是最新的。
- ShowPivotTableFieldList:控制是否显示数据透视表字段列表。
这些新增功能通过简化数据管理和增强显示选项,使以编程方式处理数据透视表更加强大。
支持数据透视表时间线切片器
时间线切片器是一种交互式筛选器,能够按日期、月份、季度或年份快速筛选数据。在 v8 版本中,新版本支持此功能的数据处理和输入 / 输出(xlsx、sjs、json)。
以下代码展示了加载和保存包含时间线切片器的 xlsx 文件的操作:
导出为 PDF 时支持图案填充
现在导出为 PDF 和图像时,支持对单元格、图表和形状进行图案填充
SpreadJS 功能兼容 - 自动合并单元格
SpreadJS 包含自动合并单元格功能,可自动合并相邻且文本重复的单元格。应用户要求,GcExcel 现在也添加了新的 API 来支持此功能:
- IWorksheet.AutoMergeRangesInfo 属性可以检索当前工作表中所有自动合并区域的信息。
- IWorksheet.AutoMerge (IRange range, AutoMergeDirection direction = AutoMergeDirection.Column, AutoMergeMode mode = AutoMergeMode.Free, AutoMergeSelectionMode selectionMode = AutoMergeSelectionMode.Source) 方法可以为指定区域添加自动合并信息。
- 上述方法中的 AutoMergeMode 枚举支持两种模式:自由模式(Free mode)和受限模式(Restricted mode)
AutoMergeDirection 枚举支持行方向、列方向、列行方向、行列方向和无方向。
API 还添加了 IncludeAutoMergedCells 属性,在导出为 PDF/HTML/Image/Excel/SJS/JSON 时,需要将其设置为 true。
以下代码在保存为 xlsx 文件时,将自动合并的单元格保存为普通合并单元格
SpreadJS 功能兼容 - 迷你图导出
在 SpreadJS 中,图像迷你图功能是对图像公式的增强,它能够显示不同大小的图像,因此与 Excel 的图像公式相比,可以接受更多图像参数。此外,SpreadJS 的图像迷你图功能接受 base64 字符串作为参数来定义图像源。
GcExcel V8.0 版本扩展了 V7.2 中支持的 IMAGE 函数的功能,增加了对 SpreadJS 图像迷你图参数的支持。
以下代码使用传递给 IMAGE 函数的新参数添加图像迷你图。第一段代码对图像进行裁剪,第二段代码以原始大小添加图像
SpreadJS 功能兼容 - 支持单元格装饰
在新版本中,支持 SpreadJS 的单元格装饰功能。该 API 有助于管理单元格装饰,包括在单元格中添加、删除和替换单元格装饰的操作
IRange 接口中新增了 ICellDecoration.Decoration 属性,用于设置单元格装饰属性
此外,CornerFold 和 CellDecorationIcon 类分别用于添加单元格装饰的角折和图标
SpreadJS 功能兼容 - 包含/排除:绑定数据的选项
新版本在 SjsSaveOptions、XlsxSaveOptions 和 SerializationOptions 中添加了一个新属性 IncludeBindingSource,用于控制在导出为 SJS、SSJSON 和 XLSX 文件时,是否将绑定数据导出到文件中。该选项默认设置为 True。
以下代码展示了在使用 SjsSaveOptions 保存为.sjs 文件时,如何应用此属性:
这使得 SpreadJS 能够显示 GcExcel 在后端计算的最终结果,无需在前端重新计算,避免了大量数据传输。因此,SpreadJS 在前端的加载速度更快。
GcPDF V8.0 新版本特性
优化 PDF 文档体积
为优化 PDF 文件的加载和保存性能,以及减小生成的 PDF 文件大小,进行了多项改进。其中一项改进是优化了处理对象流的方式。
新的 SavePdfOptions 类让你能够精确控制代码,以最适合应用程序的方式保存 PDF,该类的实例可传递给 GcPdfDocument.Save ()、Sign () 和 TimeStamp () 方法。使用对象流(PDF 1.5)保存 PDF,可通过合并对象来减小文件大小、缩短加载时间并提高压缩效率,使文档处理更加快速和高效。
以下定义了这些属性的功能:
- UseObjectStreams - 定义在保存 PDF 文档时,如何使用各种枚举选项来处理对象流。
- PdfStreamHandling - 定义如何处理加载文档中现有的 PDF 流。
以下代码有助于最小化 PDF 文档的大小:
优化字体格式
在新版本中,还为 GcPdfDocument 和 FontHandler 类添加了 PdfFontFormat 属性,允许用户为 PDF 文档中表示字体的字体格式设置编码类型。
PdfFontFormat 枚举提供了以下定义编码类型的选项:
- Type0AutoOneByteEncoding - 将字体保存为一个或多个 Type0 PDF 字体,每个字符用一个字节编码。
- Type0IdentityEncoding - 将字体保存为单个采用 Identity 编码的 Type0 字体,每个字符用两个字节编码。
GcPdf 默认使用单字节编码格式,即 Type0AutoOneByteEncoding,在大多数情况下可生成更小的 PDF 内容。
导出图像时包含 / 排除注释或表单字段
新版本中,在将 PDF 导出为图像时,可以精确控制要包含的注释。
SaveAsImageOptions 的新 DrawAnnotationFilter 属性可以调用一个委托,根据注释或表单字段的类型来检查是否渲染它们。以下代码可实现此功能:
编辑时保留图像
如果图像的一部分被编辑,该图像会被编辑后的版本替换。然而,如果同一图像在多个位置出现,你可能希望对所有图像实例进行编辑,或者仅对编辑位置的图像实例进行编辑。现在,你可以通过 RedactOptions 类中的新 CopyImagesOnRedact 属性来控制此行为,该属性指示在应用编辑之前,是否复制编辑区域内且在其他位置也出现的图像。设置为 True 时,仅编辑区域内的图像实例会被修改,其他位置的图像保持不变。设置为 false 时,文档中所有该图像的实例都会受到编辑的影响。默认值为 False。
以下代码仅在一个位置编辑图像,但其他位置的相同图像将被保留:
GcWord V8.0 新版本特性
增强功能:动态占位符
Microsoft Word 中的字段是数据的动态占位符,可以根据特定条件自动更新,无需手动更新,有助于创建格式一致的专业文档。字段不仅可用于显示动态数据,还可以通过调整其参数(arguments)和修饰符(switches)来进行自定义和控制,从而修改其行为和输出。
在新版本中,增加了对以下字段的支持和更新:
- PAGE - PAGE 字段用于获取当前页面的页码。
- PAGEREF - PAGEREF 字段用于插入包含交叉引用书签的页面的页码。
- SECTION - SECTION 字段用于获取当前节的编号。
- SECTIONPAGES - SECTIONPAGES 字段用于获取当前页面在当前节内的页码。
- SEQ - SEQ 字段用于对文档中的章节、表格、图表和其他用户定义的项目列表进行顺序编号。
- TC - TC 字段用于定义目录(包括图表目录)条目的文本和页码,TOC 字段会使用这些信息。
- TOC - TOC 字段根据 TC 字段指定的条目、标题级别、指定样式构建目录(也可以是图表目录),并将该目录插入到文档中的此位置。
上述每个字段在 GrapeCity.Documents.Word.Fields 命名空间中都有一个对应的...FieldOptions 类,通过该类可以强类型访问来读取和写入特定字段类型的参数和修饰符。FieldFormatOptions 类是...FieldOptions 类的基类,支持格式化属性。
要更新(重新计算)字段,可以使用新的 GcWordDocument.UpdateFields () 方法,或特定字段上的 Update () 方法。这样可以在 DOCX 文档中,或导出为 PDF 或图像时,包含更新后的字段结果。
点击上述每个字段的链接,可查看每个字段类型的详细 API。
以下代码使用 TocFieldOptions 类在 Word 文档的第二页添加目录:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。