服务端文档组件库 GrapeCity Documents 的新版本已正式发布,本次更新主要针对 GrapeCity Documents for Excel(GcExcel)进行,包括:为生成的 Excel 模板加入了更多全新功能、支持将数字签名添加到 Excel 工作簿、支持将 Excel 转换为 HTML 格式、增强数据透视表功能,以及增加了与纯前端表格控件 SpreadJS 的产品兼容性等。

本次更新的主要内容有:

GcExcel V3.0 Update2 更新内容

一、为生成的 Excel 模板增加更多功能选项

GcExcel 已经支持了基于 Excel 的文档对象模型,可生成更为复杂的 Excel 报告。

本次更新,GcExcel 为生成的 Excel 模板增加了更多功能选项,如可通过使用表单域及相关性能的新模板语法在 MS Excel 中设计 PDF 表单。

1. 从 Excel 模板生成可填写的 PDF 表单

GcExcel 引入了“表单” ,用以在 Excel 模板中定义 PDF 表单字段和相关属性。字段可以通过 Excel 文件中的 JSON 字符串和模板进行设置,这些表单字段可以被转换为 PDF 表单字段,与 Adobe Acrobat 的规范完全兼容。

示例:要使用文本框的表单字段,请将 MS Excel 单元格中的表单字段定义为文本框类型。


        {
                {(form={
                "type":"textbox", "name":"txt1",
                "font":{"size":10.5}, 
                "justification":"centered"}
                )}
        } 

使用该功能,可在不同的单元格中设置表单域和标签,并利用 MS Excel 方便地设计复杂的PDF表单样式,且不必依靠 Acrobat 或第三方工具来调整表单布局,如字符间距和字号。

如下图所示,通过 GcExcel 将文本框类型的不同表单字段作为模板单元格,即可在模板中使用的不同标签,并定义相关属性。

从 Excel 模板生成可填写的 PDF 表单

除了直接在 Excel 中进行设置,还可通过 JSON 格式来设置 PDF 表单。

目前,GcExcel 已支持添加所有 PDF 表单字段,如:

  • 文本框
  • 复选框
  • 单选按钮
  • 组合框
  • 列表框
  • 按钮
  • 签名栏

在 Excel 模板中,除了适用于所有“表单字段”的通用设置之外,GcExcel 还支持为每个“表单字段”进行特定设置,这些设置可以轻松地以 JSON 格式定义。


        {
                {(form={
                        "type": "textbox",
                        "name": "txt1",
                        "font":{"size":10.5}, 
                        "justification": "centered"}
                )}
        } 

示例代码:处理 Excel 模板并直接保存为 PDF


        //create a new workbook
        var workbook = new GrapeCity.Documents.Excel.Workbook();
        //Load template file from resource
        var templateFile = GetResourceStream("xlsx\\Template_USTaxForm.xlsx");
        workbook.Open(templateFile);
        //Invoke to process the template
        workbook.ProcessTemplate();
        //save to an excel file
        workbook.Save("USTaxForm.PDF");

2. 在 JavaScript PDF Viewer 中查看、编辑、填写和提交 PDF 表单

在 JavaScript PDF Viewer 中查看、编辑、填写和提交 PDF 表单

3. 为 PDF 表单绑定数据

GcExcel 除了生成可填写的空白 PDF 表单外,还可以设计与数据库值绑定的PDF表单。只需在 Excel 文件的数据库字段声明中定义 Form 属性即可:


{
{ ds.Name (form = {
        “ type”:“ textbox”,
        “ name”:“ name”,
        “ font ”:{“ color”:
        “#000000”,“ bold”:true}})}}
}

经过 GcExcel 处理后,模板将使用数据库中的数据进行扩展。因此,在 PDF 中显示的每个字段都是“文本框字段”,您可以随时编辑并保存。

为 PDF 表单绑定数据

为 PDF 表单绑定数据

4. 使用字体文件控制 PDF 表单大小

当您需要在 PDF 表单中使用某些字体,但是计算机/浏览器可能没有这些字体时,可以在模板文件中使用 TemplateOptions.EmbedFontForFormFields 的全局选项,将由 Form 字段使用的 Font 字体文件嵌入到生成的 PDF 文档中。

使用字体文件控制 PDF 表单大小

  • 如果设置为 True,则表单字段中使用的字体文件将嵌入到 PDF 文件中。这将帮助您正确输入任意字符,即使您的机器/浏览器没有安装相应的字体。但是,请注意,这可能会增加 PDF 文件的大小,尤其是在使用东亚字符的 PDF 表单中。
  • 如果设置为 False,则不会嵌入字体文件。因此生成的 PDF 文档的大小将很小,但是如果在表单中输入字符,视觉输出可能无法正确显示。

5. 使用迷你图扩展模板

使用迷你图扩展模板

使用迷你图扩展模板

在具有大量数据的 Excel 文件中,您必须手动为每行添加迷你图,或将其复制到其他行。但是,如果数据范围发生变化,则必须再次手动检查工作表并修改每行迷你图的数据范围。

使用 GcExcel 生成的 Excel 模板,只需定义一次 Template 范围,Sparklines 将始终随着数据库中数据的更新而扩展,从而使 Excel 文件数据始终保持最新。

6. 使用 Excel 的表格扩展模板

您可以将数据放入 Excel 并对其进行排序和过滤,但是当您拥有不同类型的数据时(例如,特定于客户信息的数据或清单等),您可能需要将数据放在单独的表中维护。

因此,在 Excel 中,表格是处理大量数据的最佳手段。

出于这个原因,GcExcel 使用了模板来支持 Excel 表格。在数据扩展后,GcExcel 的模板功能(格式、排序、过滤等)将自动应用于表格。使用 GcExcel,只需在表格区域内定义模板单元格,模板就会随着内置表格的格式和功能自动更新和扩充。

使用 Excel 的表格扩展模板

使用 Excel 的表格扩展模板

7. 为 Excel 报表定义固定布局,并在特定范围内填充数据

此外,为了满足不同公司(如发票、采购订单、电话账单等)对于 Excel 标准模板的要求,GcExcel 可以控制 Excel 报表的布局。

例如,如果 Excel 模板预定义了一组行,GcExcel 通过属性 FillMode (FM)和 FillRange 控制表单布局,则经过处理后,不会在最终报告中插入多余的行。

在下面的示例中,演示了模板处理时使用 FM = Overwrite 模式的效果。

为 Excel 报表定义固定布局,并在特定范围内填充数据

为 Excel 报表定义固定布局,并在特定范围内填充数据

除了控制表单布局,一旦您的数据不适合模板中定义的范围,GcExcel 可以将其他属性 FillRange 与 FillModeoverwrite 属性一起使用。在处理模板后,GcExcel 将复制您定义的范围。如果数据仍然不适合该范围,GcExcel 将再次复制该范围,直到数据适合为止。

如,在下面的示例中,数据源包含的行比 FR = A12:D23 范围中定义的行多,因此该范围被重复两次以适合模板中的数据,同时保留了模板行的格式。

为 Excel 报表定义固定布局,并在特定范围内填充数据

为 Excel 报表定义固定布局,并在特定范围内填充数据

二、将 Excel 电子表格和 Excel 范围导出到 HTML

将 Excel 电子表格和 Excel 范围导出到 HTML

使用 GcExcel,将不会在 Web 应用程序中执行复杂的编码,GcExcel 支持将完整的 Excel 电子表格或电子表格的一部分直接导出到 HTML 文件,并在线显示 Excel 内容。 目前,GcExcel 可以将 Excel 导出为 HTML,并将 Excel 的内容保存为 HTML 文件格式,支持的导出选项包括:

  • 网格线
  • 标题
  • 工作表名称
  • Excel范围
  • 隐藏的工作表
  • 图片
  • CSS 样式
  • 注释
  • 超连结

与此同时,GcExcel 还可以将整个工作簿、单个工作表或仅一系列数据导出到 HTML 中。这一步转换很简单,不需要任何控件的依赖。

示例代码:


//create a zip file stream
FileStream outputStream = new FileStream("saveworksheettohtml.zip", FileMode.Create);
//create a new workbook
var workbook = new GrapeCity.Documents.Excel.Workbook();
Stream fileStream = this.GetResourceStream("xlsx\\BreakEven.xlsx");
workbook.Open(fileStream);
HtmlSaveOptions options = new HtmlSaveOptions();
// Export first sheet
options.ExportSheetName = workbook.Worksheets[0].Name;
// Set exported html file name
options.ExportFileName = "Analysis";
workbook.Save(outputStream, options);
//close the zip stream
outputStream.Close();

三、支持将数字签名添加到 Excel 工作簿

将 Excel 电子表格和 Excel 范围导出到 HTML

将数字签名添加到 Excel 工作簿,可提供有关签名者身份以及文档真实性的高度保证。由于数字签名的安全架构,所有数字签名的文档都将链接到用户身份,并且易于验证。

Excel 数字签名可以是定义的签名行,以指示签名者有关签名的详细信息。此外,对电子表格进行签名可以是实际的签名。签名可以是可见的签名,也可以是不可见的签名。

GcExcel 的 IWorkbook.Signatures 属性可将数字签名添加到 Excel 工作簿。以下是具体功能:

  • 添加、剪切、复制、删除签名行 
  • 在签名行上签名 
  • 在已签名的工作簿中添加签名行
  • 修改签名的工作簿内容并签名
  • 从已签名的工作簿中删除不可见的签名
  • 从签名行中删除签名
  • 将签名的工作簿导出为PDF
  • 列出签名行 
  • 移动签名行
  • 添加隐形签名
  • 验证签名

GcExcel的 API 库完全基于 MS Office Digital 签名支持,并提供了类似于 Excel 的强类型 API,供用户在 Excel 电子表格中实现 Diital Signature UI 或服务。

四、数据透视表增强功能

1. 从一个 PivotField 创建多个数据字段

GcExcel 可以从单个数据透视表字段中添加一个或多个字段,并对该字段应用多个计算,从而使其在数据透视表中多次出现。

在下面的示例中,“求和”和“计数”功能两次应用于单个“数量”数据透视字段,该字段可能出现在“数据透视表”的不同列下。

从一个 PivotField 创建多个数据字段

2. 延迟布局更新

每当添加、删除数据透视表的数据字段或将其移动到其他位置时,都会重新计算整个数据透视表,这影响了Excel 电子表格生成的整体性能。

为此,GcExcel 添加了 DeferLayoutUpdate 属性,可推迟数据透视表的任何更新操作,直到用户选择调用 Update 方法,这样可以提高在 Excel 电子表格中使用数据透视表的性能。

示例代码:

        
        IWorksheet worksheet = workbook.Worksheets[0];
        worksheet.Range["A1:F16"].Value = sourceData;
        worksheet.Range["A:F"].ColumnWidth = 15;
        var pivotcache = workbook.PivotCaches.Create(worksheet.Range["A1:F16"]);
        var pivottable = worksheet.PivotTables.Add(pivotcache, worksheet.Range["H7"], "pivottable1");
        // defer layout update
        pivottable.DeferLayoutUpdate = true;
        //config pivot table's fields
        var field_Category = pivottable.PivotFields["Category"];
        field_Category.Orientation = PivotFieldOrientation.RowField;
        var field_Product = pivottable.PivotFields["Product"];
        field_Product.Orientation = PivotFieldOrientation.ColumnField;
        var field_Amount = pivottable.PivotFields["Amount"];
        pivottable.AddDataField(field_Amount, "sum amount", ConsolidationFunction.Sum);
        // must update the pivottable.
        pivottable.Update();
        //save to an excel file
        workbook.Save("PivotTable.xlsx");
        

3. 支持数据透视表的布局和格式选项

从一个 PivotField 创建多个数据字段

GcExcel 当前已支持各种数据透视表布局和格式选项,以更好地呈现数据,其支持的选项包括:

  • 可合并具有外行项目、列项目、小计标签和总计标签的单元格:IPivotTable.MergeLabels
  • 启用紧凑行布局窗体时,自动缩进数据透视表项:IPivotTable.CompactRowIndent
  • 可对数据透视表字段进行排序(DownThenOver 或OverThenDown ):IPivotTable.PageFieldOrder
  • 可检索或设置“数据透视表”中每个列或行的字段数:IPivotTable.PageFieldWrapCount
  • 可在包含错误的单元格中获取或设置字符串:IPivotTable.ErrorString   
  • 可获取或设置包含空值的单元格字符串:IPivotTable.NullString   

4. 排序(Sorting)

GcExcel 可使用IPivotField.AutoSort对数据透视表中的数据进行排序。

从一个 PivotField 创建多个数据字段

此外,GcExcel 还可以通过 AutoSortField 属性,检索指定数据透视表中用于排序的数据字段名称,并通过使用 Auto SortOrder 属性来检索其排序顺序,使用 IPivotItem 接口的 Position 属性来设置或检索其字段中的位置。

5. 访问表的详细范围

如果只是访问数据透视表的对象,将很难获取其详细范围,您需要编写更多代码才能访问此类范围并应用格式,例如:

  • 在不同范围内,应用单独的条件格式,如用溢出值而不是小计区域标记数据区域。
  • 在小计范围内,应用特定的文本格式。 
  • 在合并小计范围或总计范围内,获取标题单元格。

通过使用 GcExcel ,可以很方便的解决上述问题。GcExcel 可直接在数据透视表中访问详细范围,并根据需要格式化数据或单元格:

  • PivotRowAxis:访问数据透视表的左下角。
  • PivotColumnAxis:访问数据透视表的右上角。
  • PivotLine:访问RowAxis或ColumnAxis 。
  • PivotLineCell:访问数据透视表中的单元格。
  • PivotValueCell:访问值区域中Pivot单元的包装。

在以下示例中,通过使用 PivotLineType 检测小计线类型,可以很容易地给 PivotLine 单元格设置背景色。

访问表的详细范围

6. 支持各种数据透视表字段布局设置

GcExcel 可通过代码更改数据透视表的布局,实现紧凑、松散或表格布局。本次更新,GcExcel 还增加了插入空白行、设置小计位置、显示所有项目和重复数据透视表布局中的任何项目等功能。

支持各种数据透视表字段布局设置

支持各种数据透视表字段布局设置

五、形状 z-order 支持

形状 z-order 支持

为了确保一组形状的正确显示,必须定义形状的上下层顺序。为此,GcExcel 添加了IShape.ZOrder (ZOrderType zOrderType )来设置 Shape 的 z-order,并添加了IShape.ZOrderPosition 来获取形状的 ZOrder 位置。

六、导出为 PDF 时优化图像质量

使用 GcExcel,可以根据要求调整导出 PDF 时的图像质量,通过 PDFSaveOptions.ImageQuality 属性控制。图像质量越高,则 PDF 的尺寸越大。

导出为 PDF 时优化图像质量

七、将图像添加到 Excel 时,支持透明度调节

将图像添加到 Excel 时,支持透明度调节

如果您想将图片设置为水印/徽标或文档状态(例如草稿等),则需要对图片的透明度进行调节。GcExcel 增加了在 Excel 中为图像设置透明度的支持,使用 IPicture.PictureFormat.Transparency 来设置透明度值。

八、与纯前端表格控件 SpreadJS 集成的更多功能

GcExcel 增加了与纯前端表格控件 SpreadJS 的产品兼容性。请注意,这些功能仅适用于 SpreadJS,在原生 Excel 中不支持。

1. 分别显示/隐藏水平或垂直网格线

在 Excel 中,仅可同时设置“水平”和“垂直”网格线为 true 或 false,不能单独设置。但使用 GcExcel,可以分别将这些网格线设置为 true 或 false。

使用 DisplayHorizo​​ntalGridlines 和 IWorksheetView.DisplayVerticalGridlines ,可分别将 Horizo​​ntal 或 Vertical 网格线设置为 true 或 false。

如下所示,垂直网格线被设置为关闭状态。

分别显示/隐藏水平或垂直网格线

2. 自定义冻结线颜色

在 Excel 中,无法自定义冻结线的颜色。但使用 GcExcel,可以用其他颜色显示冻结线,以便始终清晰地分离和隐藏其下的数据。

GcExcel 的 FrozenLineColor 属性,用于设置冻结窗格的颜色。

自定义冻结线颜色

示例代码如下:


//Use sheet index to get worksheet.
IWorksheet worksheet = workbook.Worksheets[0];
// freeze pane
worksheet.FreezePanes(3, 3);
// Set frozen line color as dark blue.
worksheet.FrozenLineColor = Color.Red;  

3. 冻结尾部的行/列

在 Excel 中,仅可冻结初始行或列。但是有时候,我们需要数据在最右边的列上计算一个“摘要”,或者将诸如按钮之类的窗体控件添加到触发动作列中。此时,添加一个选项来冻结 Excel 电子表格中的尾部行或列将变得很有用。

GcExcel 添加尾部行/列的冻结方式:

  • IWorksheet.FreezeTrailingPanes (int行,int列):冻结工作表的尾部行或列。
  • IWorksheet.UnfreezeTrailingPanes ():解冻工作表的尾部窗格。
  • IWorksheet.FreezeTrailingRow :获取工作表的尾部冻结行数。

冻结尾部的行/列

示例代码如下:


//Use sheet index to get worksheet.
IWorksheet worksheet = workbook.Worksheets[0];
 
// freeze pane
worksheet.FreezePanes(2, 2);
 
// freeze trailing pane
worksheet.FreezeTrailingPanes(2, 3);

GrapeCity Documents 服务端文档组件库 - 历史版本

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