服务端表格组件 GrapeCity Documents for Excel 更新说明

1. ImportData 功能增强

ImportData 是 GcExcel V5.0 发布时加入的功能,此功能便于用户提取 Excel 文件中的数据。本次发布,GcExcel增加了 GetNames 接口,让用户从Excel中提取数据的效率更加高效。

使用方法:WorkBook.GetNames 返回工作表中所有的表格名称,便于用户选择导入数据的范围和位置,示例代码:

相对普通的文件打开方式,使用 ImportData可以减少一半时间。

2. 数据绑定模板支持 JSON 数据源

本次发布,GcExcel 的模板语法支持了 JSON 数据源,这样可以让 GcExcel 生成模板报表时直接使用其他接口传递过来的 JSON 格式数据。

如下方代码所示:

运行后的效果如下图所示:

3. CELL 函数支持

GcExcel V5.0 Update1 中增加了对 CELL 函数的支持。

该函数的应用场景是:通过查找特定单元格的单元格信息并在 Excel 文件中执行某些操作。信息可以是任何性质的数据,如单元格地址、颜色、内容、文件名、格式等。

使用方式:GcExcel 引入了语法“=CELL(info_type, [reference])”的 CELL 函数,通过提供所需的信息类型和引用类型,帮助您找到相关的单元格信息。

有关 CELL 函数的更多信息,推荐查看微软网站解释:CELL Function

4. 转换表格(Table)到范围(Range)

Excel 除了被用于数据归档和样式保存外,还有一个重要作用就是公式计算。为了使用动态数组公式等函数,必须将表格转换为范围(Range)。对于 Excel 来说,Range 表示一个单元格、一行、一列、一个包含单个或若干连续单元格区域的选定单元格范围,或者一个三维区域。

想象一下,假如您有 1000 多个 Excel 文件,您想在其中使用表数据,但在将其转换为Range之前无法实现,手动执行将表格转换为 Range 的任务既繁琐又低效。因此,为了满足上述需求,GcExcel 提供了一个新的 API —— ITable.ConvertToRange() ,可以用编程的方式将表格转换为 Range。 请注意:将表格转换为范围(Range)后,表格功能在数据范围中不再可用,但样式和数据将保留,且工作表上公式中的表格引用将转换为单元格引用。

5. 数据透视表中支持 "ShowValueAs"

GcExcel 目前支持了 Excel 的“将值显示为”选项,这有助于在数据透视表中以不同方式显示值。

  • IPivotField.Calculation 获取或设置一个值,该值表示由指定字段执行的计算类型。
  • 使用 IPivotField.BaseField 获取或设置自定义计算的基本字段。 此属性仅对数据字段有效。
  • 使用 IPivotField.BaseItem 获取或设置基本字段中的项目以进行自定义计算。 此属性仅对数据字段有效。

在以下示例中,GcExcel已在数据透视表的数据上设置了“总计百分比”选项:

6. 数据透视表支持计算字段

本次更新,GcExcel 添加了一个 ICalculatedFields 接口,您可以使用该接口在数据透视表中创建或删除计算字段。

此外,IPivotTable.CalculatedFields() 方法可以获取包含指定数据透视表中所有计算字段的 CalculatedFields 集合,而新的 IPivotField.Formula 可以获取或设置计算字段公式。

7. SpreadJS 兼容性增强

透视表中的视图:经过 GcExcel 的 JSON 导入导出,由 SpreadJS 设置的透视表视图会保留,如下图:

集算表:经过 GcExcel 的 JSON 导入导出,由 SpreadJS 设置的集算表会保留,如下图:

 

服务端 PDF 组件 GrapeCity Documents for PDF 更新说明

1. 支持 PAdES B-LT 和 B-LTA 级别的电子签名

GcPDF 引入了对签署 PDF 文档 PAdES 标准的支持 ,使电子签名的文档长期有效。

GcPDF 支持的 LTV 签名如下:

  • 文档安全存储:根据 PDF 规范,验证 LTV 签名所需的所有信息都应该在 文档安全存储 ( DSS ) 中。它是文档目录中的PDF 词典 。GrapeCity.Documents.Pdf.Security.DocumentSecurityStore 类表示 GcPDF 中的 DSS ,并且可以通过 GcPdfDocument.SecurityStore 属性访问此类的实例。DocumentSecurityStore 类允许开发人员为签名添加验证信息。
  • 文档时间戳签名:一种特殊类型的签名,在时间戳标记中指示的时间建立完整 PDF 文件的确切内容。GcPdfDocument.TimeStamp (...) 方法允许创建文档时间戳签名。

下图演示使用了 GcPDF API 生成并添加到 PDF 文档 的 PAdES B-LTA 级别签名:

2. PDF 图层增强功能

GcPDF 支持以编程方式向PDF文档添加图层,帮助排列 PDF 中相关的对象。

使用方式:使用 GcPdfDocument.OptionalContentProperties 类可将单独的内容层添加到单个 PDF 中。

3. 将文档保存为 SVG

与 JPEG 和 PNG 等光栅图像格式相比,SVG 是一种矢量格式,可以在不损失质量的情况下以任意大小进行渲染。这种格式让设计人员和开发人员可以更好地控制图像外观。它也是 Web 图形的标准化格式,旨在与其他 Web 约定 (如 HTML、CSS、JavaScript和文档对象模型)一起使用。由于 SVG 的许多优点, 在文档中使用 SVG 图像是必不可少的,例如 PDF 和图像。

本次发布,GcPDF 可以使用所有常见的图形操作来绘制新 GcSvgGraphics 类的实例,然后可以将其转换为 GcSvgDocument 并保存为 SVG 或 SVGZ 图像。

以下代码演示了将 PDF 页面(文档中的第二页)导出为 SVG/SVGZ 格式:

    
var pdfDoc = new GcPdfDocument(); 
using (var fs = new FileStream("slide-pages.pdf", FileMode.Open, FileAccess.Read, FileShare.Read)) 
{ 
pdfDoc.Load(fs); 
var page = pdfDoc.Pages[1]; 
// Render a PDF page to the .svg file page.SaveAsSvg("slide-pages.svg"); 
// Render a PDF page to the byte array with compressed data in SVGZ format 
var svgzData = page.ToSvgz(); 
File.WriteAllBytes("slide-pages.svgz", svgzData); }
    

 

服务端 Word 组件 GrapeCity Documents for Word 更新说明

1. 增强的字体支持

GcWord 添加了在 DOCX 文档中嵌入字体的功能,以确保您的文档在其他系统中的显示或打印与它们在您系统上的显示相同。本次发布,可以使用 GrapeCity.Documents.Text 命名空间中的查找字体选项在添加新内容后修改/保存它们。

如果您的文档是用多语言字体脚本准备的, GcWord 还可以通过设置以获取不同语言文化的主题字体。

例如,对于 Settings.LocaleNameFarEast = "ja-JP," GcWord在Supplemental map 中从 Theme Font Collection的MinorFont 和 MajorFont 中找到 "Jpan" 字体脚本 ,然后将映射的字体定义为该文档的“使用中”。如果未指定字体 ,则 GcWord 将来自 MinorFont 和 MajorFont 主题字体的 Latin.Name 字体名称定义为本文档的“正在使用”或使用默认主题字体。 

GcWord 的新 API:

  • 扩展 FontInfoCollection 类以从 GrapeCity.Documents.Text 命名空间添加字体。
  • 扩展 Settings 类以支持 SaveOptions 类。定义本地属性以查找与语言文化相关的字体。

2. 字体效果

除了上述增强之外,GcWord 还向 Font 类添加了额外的 Fill 和 Line 属性。这项功能有助于将字体效果添加到您的文档中,例如 Line-Solid、Gradient 或 No Fill。

3. 段落块行为 

GcWord 现在允许使用名为“ pbb” 或“段落块行为” 的新模板格式化程序在表格单元格中定义值列表(多行) 。 此格式化程序将帮助在单个表格单元格中添加一个范围作为单独的段落,而不是像默认范围行为那样为每个项目生成一个新的表格行。

如下图,如果 未定义“pbb” ,则 Oceans 下的海洋名称都出现在单独的表格行中。如果使用数据源绑定定义了“pbb”,则 seas name 的所有名称一起出现在一个单元格中。

以下代码显示了如何为上面的示例设置“pbb” 格式化程序:

    
table[1, 0].GetRange().Paragraphs.First.GetRange().Runs.Add("{{#ds.seas}:pbb()}{{ds.seas.name}}{{/ds.seas}}");
    

4. 运行块行为 

GcWord 现在还支持添加' rbb'或 run-block-behavior 格式化程序以将列表的数据项打印为同一段落的运行,而不是作为默认范围行为的单独段落。

如下图,如果添加的海洋名称不带“rbb”,则海洋名称将打印在单独的行上,海洋名称重复。但是如果在 #ds.seas 中添加'rbb',它将用冒号分隔每个海洋名称:

以下代码演示了如何为上面的示例添加 'rbb' 格式化程序:

    
doc.Body.Paragraphs.First.GetRange().Runs.Add("{{#ds.seas}:rbb()}{{ds.seas.name}}; {{/ds.seas}}");
    

历史版本

查看更多关于 GrapeCity Documents 服务端文档组件库的历史版本。