重要信息:GrapeCity Documents 组件包更名为 GcDocs

为了更好的持续改进产品以及服务中国用户,从 V7.0 开始 GrapeCity Documents 正式更名为 GcDocs,这个更名会延伸至 GcDocs 套件下的所有 API 组件。

同时,您可以在 Maven 和 Nuget 上找到全新的 GcDocs 组件产品。

GcExcel Java : https://central.sonatype.com/artifact/com.grapecitysoft.documents/gcexcel/overview

GcExcel .Net : https://www.nuget.org/packages/GcDocs.Excel

GcPdf : https://www.nuget.org/packages/GcDocs.Pdf

GcWord : https://www.nuget.org/packages/GcDocs.Word

为了方便,您对已有的工程进行升级,我们也提供了迁移工具。您可以在 GcDocs 各产品试用下载包中看到该工具。

对于旧的包(Grapecity Dcouments 组件),您仍然可以从下面的 Maven 或者 Nuget 页面访问获取,或者您可以联系我们

需要强调的是 GcDocs 仅仅是包名字的修改,组件内所有的命名空间,类型名等并未更名,对于您已有的代码,无需做任何修改。

下面让我们开始了解 V7.0 的新功能。

 

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

增加异步自定义函数

Excel 支持使用异步编程技术的自定义函数进行异步计算。假设您有一个场景,需要从外部源获取数据或执行耗时的计算。传统的同步函数会阻止 Excel 的响应,直到计算完成,导致用户界面的延迟。使用异步计算,您可以通过在耗时的任务进行时允许其他操作继续来提高响应性。

在 GcExcel 中,您可以通过继承 AsyncCustomFunction 类来注册异步自定义函数。此外,CalcError 类型引入了'Busy'枚举,表示单元格当前正在计算异步公式。这个 GcExcel 中的增强功能使用户在自定义函数中利用异步计算,在涉及复杂计算的情况下提供灵活性和效率。

GcExcel 模板增强

保持图片比例

在很多场景中,我们需要保持图片的比例,例如(国旗,照片等)为了防止比例因单元格的大小而改变,使得它们看起来失真。在 v7 版本中,GcExcel 模板中引入了新的属性,即 image.keepaspect 或 image.ka。当设置为 true 时,其可确保图像的比例,从而允许其适合单元格大小,而不管其高度或宽度如何。

示例:以下代码将国旗的比例设置为 True,来让国旗以正常比例显示

    
SQL
{{ds.BikeSeries.CountryImage(image=true,image.keepaspect=true)}}
    

在分页模式下重复形状和图片

GcExcel 模板一直提供对分页模式的支持,可以对报表中的工作表进行分页。这个功能在每个工作表具有一致布局但数据不同的报表中特别有用,比如发票、进展报告和医学检测报告。在这些报表中,通常需要重复使用形状和图像,包括标志或图形,以及数据。在 v7 版本中,GcExcel 模板引入了增强的支持,可以在处理 Excel 模板时重复使用带有数据的形状和图像。这个增强功能确保更动态地处理形状和图像,为报表生成过程增加了灵活性。

形状或图像将根据起始位置的左上单元格的父级进行重复。

例如:在下面的快照中,图像根据 D12 的父级单元格 B12 重复 10 行(CP=10)。

导出 Html 支持 Inline CSS

GcExcel 支持将 Excel 电子表格导出为 HTML,并且提供了包含单独的 CSS 文件作为一个整体的灵活性。但值得注意的是,在将内容导出 HTML 通过电子邮件共享时,或集成到内容管理系统(CMS)中的情况下,CSS 样式需要内嵌至 HTML 标签内。

在最新的更新中,GcExcel 引入了一项新功能,可以在导出 HTML 时,将 CSS 样式存储在标签内(内联样式)。与此功能相配套,GcExcel 引入了 HtmlSaveOptions.CssExportType 枚举,提供三个值来将 Excel 文件以不同的 CSS 选项导出为 HTML:

External:将 CSS 导出到单独的文件中。
Internal:将 CSS 与 style 标签一起导出到 HTML 中。
Inline:将 CSS 与 HTML 元素内的 style 属性一起导出。

示例:以下代码将 Excel 工作簿导出为具有 CssExportType.Inline 选项的 HTML。请注意,样式标签嵌入在 HTML 文件中。

页面设置起始页码支持“自动”

在打印 Excel 表时,用户可以在页面设置对话框中使用'FirstPageNumber'属性来给页面加上页码。如果要使用默认的页码系统,可以将该属性设置为'Auto'。

为了解决编程场景中的需求,GcExcel 引入了 IPageSetup.IsAutoFirstPageNumber 属性,便于在打印时检索和修改第一页的页码是否设置为'Auto'。默认值为 true;但是,如果 IPageSetup.FirstPageNumber 属性已经明确设置,那么 IPageSetup.IsAutoFirstPageNumber 属性将变为 false,并需要重新设置。

示例:以下代码片段演示了如何为已将 FirstPageNumber 设置为 3 的工作表将IPageSetup.IsAutoFirstPageNumber 属性设置为 true。这样在打印时第一页的页码将自动确定,即使之前已经设置为特定值。

    
C#
//create a new workbook
var workbook = new GrapeCity.Documents.Excel.Workbook();

var fileStream = GetResourceStream("xlsx\\ConfigIsAutoFirstPageNumber.xlsx");
workbook.Open(fileStream);
IWorksheet worksheet = workbook.Worksheets[0];

worksheet.PageSetup.CenterFooter = "&P";

//Set auto page number, original first page number is 3.
worksheet.PageSetup.IsAutoFirstPageNumber = true;
        
// Save to an excel file
workbook.Save("SetIsAutoFirstPageNumber.xlsx");
    

改善选项按钮的分组策略

选项按钮的分组功能现在全面增强,您现在可以通过分组框将选项按钮进行分组,其分组策略与 MS Excel 更加一致。分组框中的选项按钮是独立运行的,这样可以确保不同分组的选项按钮组不会互相影响。您可以通过以下场景了解分组策略:

分组逻辑:
- GcExcel 将根据选项按钮和分组框的范围来判断从属关系。
- 如果选项按钮完全包含在分组框中,则选项按钮的 GroupBox 属性将被设置为第一个匹配的分组框。
- 如果没有匹配的分组框,选项按钮将默认属于工作表组。

分组行为:
- 当两个或多个选项按钮共享同一个分组框时,它们将形成一个单选按钮组。
- 在一组内,只有一个选项按钮可以被选择。

共享 LinkedCell 属性:
- 同一组中的选项按钮现在共享 LinkedCell 属性。
- 因此,为组中的一个选项按钮定义的 LinkedCell 会传播到同一组中的其他选项按钮。

这些增强功能简化了分组框中选项按钮控件的管理和行为,提高了操作的灵活性和一致性。

增强趋势图的格式设置

在图表中绘制数据时,直观地表示潜在趋势通常至关重要。Excel 中的趋势线是分析数据和根据现有趋势预测未来值的宝贵工具。GcExcel 一直支持使用 ITrendline 接口向图表添加趋势线方程,特别是通过 ITrendline.DisplayEquation 和 ITrendline.DisplayRSquared 属性。

在 v7 版本中,GcExcel 向 ITrendline 接口引入了格式化属性,以增强趋势线的视觉效果。ITrendline 接口中添加了一个新属性 DataLabel,允许用户访问与趋势线关联的数据标签。此功能使用户能够利用 IDataLabel 接口中的字体、格式、数字格式、角度、方向和自动图文集等属性来格式化趋势线方程标签。

此外,v7 版本还提供了 ITrendline.Delete 方法,该方法可以删除趋势线方程标签。值得注意的是,趋势线方程现在支持导出为 PDF、HTML 和图像,从而确保各种格式之间的一致性。这些增强功能有助于在 GcExcel 中以更全面、更具视觉吸引力的方式表示趋势线数据。

示例:在下面的快照中,使用 IDataLabel 接口的新属性格式化趋势线方程。

新增单元格默认值功能

用户现在可以选择为单元格建立默认值。如果未指定常规值,则将显示默认值并将其包含在计算中。GcExcel 添加 IRange.DefaultValue 属性来获取或设置单元格的默认值。

示例:以下代码为单元格区域 C4:C8 添加默认值(公式),同时在单元格 C6 和 C8 的添加公式。C9 单元格在计算公式时,基于 C4、C5 和 C7 的默认值进行计算。

PDF 导出支持平滑线图表

为了追求视觉上吸引人的表现和对图表数据的全面理解,GcExcel 现在支持平滑的图表线,同时也支持导出 PDF。

以下图表类型受益于此功能:

  • 折线图
  • 散点图
  • 组合图

支持在 PDF 中生成交互式表单

GcExcel 的最新更新引入了一项强大的功能,允许用户在导出为 PDF 时直接使用 GcExcel API 创建交互式表单。GcExcel 添加了新属性 PdfSaveOptions.FormFields。当设置为 true 时,此属性允许将 Excel 表单控件导出为 PDF 表单控件,同时将 Excel 文件导出为 PDF。某些表单控件的相应属性映射到其各自的 PDF 表单控件属性。

要详细了解映射的属性和限制并进一步探索此功能,请查看下面快照后提供的资源。这一增强功能增强了 GcExcel 的多功能性,为用户提供了更全面的选项来无缝创建和管理交互式表单。

PDF 导出支持漏斗图

GcExcel 现在还将支持漏斗图将 Excel 文件导出为 PDF。因此,您现在可以将漏斗图添加到 Excel 并直接将文件保存为 PDF。

    
C#
// 创建一个漏斗图
IShape shape = worksheet.Shapes.AddChart(ChartType.Funnel, 10, 150, 300, 200);
shape.Chart.SeriesCollection.Add(worksheet.Range["A1:B7"]);

// 设置漏斗图的样式
shape.Chart.ChartTitle.Text = "Funnel Chart";
foreach (var s in shape.Chart.SeriesCollection)
{
    s.DataLabels.Font.Color.RGB = Color.White;
}
        
// 保存为PDF
workbook.Save("FunnelChartPdf.pdf");
    

CSV 导出支持指定列包含“引号”

在某些情况下,导出 CSV 时,需要给特定的列使用“引号”(转义字符)。采取此预防措施是为了防止导出到 CSV 时出现任何潜在的数据误报。GcExcel 添加了新属性 CsvSaveOptions.QuoteColumns 来指定需要转义字符的特定列。可以在属性中指定列的索引。GcExcel 会根据该属性中指定列,使用 CsvSaveOptions.CellSeparator 指定的符号来为这些列添加转义字符。

当 CsvSaveOptions.QuoteColumns 不为 null 时; 只有指定列中的数据才会用转义字符引起来,而其他列中的数据则不加转义字符。请务必注意,如果值包含特殊字符(例如引号或分隔符),则无论如何都会将其括在转义字符中。

示例:在以下示例中,CsvSaveOptions.QuoteColumns 属性定义导出到 CSV 之前需要转义字符的列。

增强 与 SpreadJS 兼容

GcExcel 新增了对 SpreadJS 功能的支持,增强了与客户端 SpreadJS 产品的兼容性。请注意,这些附加功能仅适用于 SpreadJS,并且与 Microsoft Excel 不兼容。

  • 对 cell.altText 属性的支持
  • 对 IRange.DefaultValue 的支持
  • 支持遮罩样式
  • 支持受保护工作表中的密码

 

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

新的插入符注释

在 GcPDF 中引入了插入符注释,这是一种用于审阅 PDF 文档的强大工具。

CaretAnnotation 类使得以编程方式精确指出缺失的内容或必要的更改成为可能。如果你需要以编程方式在文档的多个位置添加插入符注释,那么这将特别有用。

示例:以下代码展示如何查找特定文本,并在该文本之后添加一个插入符注释。

    
C#
using (FileStream fs = new FileStream(@"Wetlands.pdf", FileMode.Open, FileAccess.Read))
{
        GcPdfDocument doc = new GcPdfDocument();
        doc.Load(fs);

        var page = doc.Pages[0];
        var tm = page.GetTextMap();
        // insert the CaretAnnotation after "The Importance" text
        tm.FindText(new FindTextParams("The Importance", false, true), (fp_) =>
        {
                // r - bounds of the found text
                var r = fp_.Bounds[0].ToRect();
                // create the CaretAnnotation and add it to the page
                CaretAnnotation ca = new CaretAnnotation();
                ca.Page = page;
                // in this code annotation size is hardcoded, you can make a code
                // which will adjust size of the annotation depending on height of the found text fragment
                ca.Rect = new System.Drawing.RectangleF(r.Right - 4, r.Bottom - 8, 8, 8);
         });

         doc.Save(@"doc.pdf");
}
    

自定义时间戳

在某些情况下,由于安全原因,服务可能无法连接并从客户端返回所需的时间戳。在这些情况下,可能需要一个定制的时间戳服务向客户端发送一个有效的时间戳令牌。

然后客户端利用时间戳令牌对 PDF 文件进行签名,以确保符合各种 PAdES B-T/B-LT/B-LTA 等级的要求。简而言之,要求是在使用 PDF API 对 PDF 文档进行签名时定制时间戳令牌的生成。现在您可以在 GcPdf v7 中通过使用新的 ITimeStampGenerator 接口实现相同的功能,该接口使用户能够通过将其分配给 SignatureProperties 和 TimeStampProperties 类的 TimeStamp 属性来轻松生成个性化的时间戳令牌。

示例:以下代码将展示生成带有定制时间戳令牌的签名。

      
C#
// generate the signature with time-stamp token
X509Certificate2 crt = new X509Certificate2(@"User.pfx", "**");
using (FileStream fs = new FileStream(@"EmployeeTimeSheet.pdf", FileMode.Open))
{
        GcPdfDocument doc = new GcPdfDocument();
        doc.Load(fs);

        SignatureProperties sp = new SignatureProperties();
        sp.SignatureBuilder = new Pkcs7SignatureBuilder()
        {
                    CertificateChain = new X509Certificate2[] { crt },
        };
        sp.TimeStamp = new TimeStampGenerator()
        {
              ServerUrl = @"http://ts.ssl.com",
        };
        sp.SignatureField = doc.AcroForm.Fields[0];
        doc.Sign(sp, "signed.pdf");
}
    

 

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

图片效果

在不断发展的文档创建领域中,动态和视觉吸引力的内容需求至关重要。为了满足对多功能和可定制文档元素的需求,GcWord v7 推出了一套强大的功能,允许用户对图片应用各种不同的特效。这一拓展不仅增强了文档的视觉吸引力,还简化了通过代码整合 Microsoft Word 支持的图片特效的过程。使用这些特效,您可以对图片进行以下的编程操作:

  • 调整图片的亮度和对比度
  • 使用预设色彩重新着色
  • 修改图像颜色
  • 设置透明色
  • 在图片上叠加特定的颜色色调
  • 还有更多其他功能...

以下是新引入的 API:

  • RecolorType 枚举 - 指定图像颜色变化的类型。
  • ImageEffectType 枚举 - 指定图像特效的类型。
  • UserColor 类 - 表示扩展颜色。
  • WebVideoProperties 类 - 表示向用户显示在线视频的属性。
  • ImageEffect 类 - 表示图像特效的基类。
  • AlphaBiLevel 类 - 表示Alpha双级效果。
  • AlphaCeiling 类 - 表示Alpha天花板效果。
  • AlphaFloor 类 - 表示Alpha地板效果。
  • AlphaInverse 类 - 表示Alpha反转效果。
  • AlphaModulation 类 - 表示Alpha调制固定效果。
  • AlphaModulationComplex 类 - 表示Alpha调制复杂效果。
  • AlphaReplace 类 - 表示Alpha替换效果。
  • BiLevel 类 - 表示双级(黑/白)效果。
  • ColorChange 类 - 表示颜色改变效果。
  • ColorReplacement 类 - 表示纯色替换效果。
  • Duotone 类 - 表示双色调效果。
  • Grayscale 类 - 表示灰度效果。
  • HslEffect 类 - 表示色相/饱和度/亮度效果。
  • Luminance 类 - 表示亮度效果。
  • Tint 类 - 表示着色效果。
  • ImageEffectList 类 - 表示图像特效列表。
  • EmbeddedImageData 类 - 表示嵌入式图像数据。
  • PicturePreset 枚举 - 添加图片,略微逆时针旋转的图片,并带有白色边框。
  • 对以下 API 进行的新添加和更改:

    - ImageData 类
    - Blur 类
    - FillOverlay 类

在下面的示例中,将一个图像添加到 Word 文档中,并使用 GcWord API 的 Picture.ImageData.RecolorType 枚举将其重新着色为灰度。

历史版本

查看更多关于 GrapeCity Documents 服务端表格组件的历史版本。