GrapeCity Documents V6.0 Update 2发布,新增支持SpreadJS的.sjs文件格式
近日,GrapeCity Documents 正式迎来其V6.2 的发布更新,能够支持 SpreadJS 中 .sjs 类型的文件。这一重大更新将为用户带来更多地惊喜。
.sjs文件有两个关键优势:空间更小且导入导出速度更快。通过采用 .sjs格式,GcExcel实现了更高效的文件压缩,从而使文件大小大幅减小。这不仅节省了存储空间,还方便了文件的传输和共享。此外,GcExcel还针对 .sjs文件进行了优化,使其在导入和导出过程中的速度得到显著提升。
下面将详细介绍 GrapeCity Documents V6.0 Update2 中的新特性,在此之前,如果您已经在使用了GrapeCity Documents产品,希望进一步了解新功能,可前往葡萄城官网下载最新版产品安装包,以便进行同步体验。
以下是本次发布的关键内容:
1. 服务端表格组件 GrapeCity Documents for Excel 更新说明
支持SpreadJS的.sjs文件格式
在 GcExcel 的 V6.0 Update 2 版本中,增加了对 SpreadJS .sjs 文件格式的支持。通过导出为 .sjs 格式,可以实现更短的导出时间和更小的文件尺寸。现在,您可以将 xlsx、xlsm、csv、ssjson 等格式的文件导出为 .sjs 格式,以便更高效地处理数据。
新版本增强了Workbook类上的open和save方法,支持.sjs文件,当加载或保存.sjs文件时,可以通过OpenFileFormat和SaveFileFormat,来选择Sjs枚举项。
由于对.sjs文件格式的支持,使得新版本可以满足以下功能:
- 快速将Excel文件转换为.sjs格式。
- 以更小的占用空间保存文件。
- 从.sjs文件中压缩的JSON文件生成单个JSON字符串
- 使各种可用选项自定义SpreadJS.sjs文件的打开和保存
除此之外,服务端表格组件还新添加两个类,SjsOpenOptions和SjsSaveOptions。在导入/导出.sjs文件时,可以通过这两个类来定制包含/排除特定的功能。
以下代码用于展示加载 SpreadJS 的 .sjs 文件,并通过使用 SjsOpenOptions 排除公式和样式,然后使用 GcExcel 打开并保存该文件的过程。
// 创建一个新的工作簿
Workbook workbook = new Workbook();
InputStream stream = this.getResourceStream("sjs\\LoanDetails.sjs");
// .sjs 文件格式的 OpenOptions
SjsOpenOptions openOptions = new SjsOpenOptions();
openOptions.setIncludeFormulas(false);
openOptions.setIncludeStyles(false);
// GcExcel 支持使用 OpenOptions 打开 .sjs 文件格式
workbook.open(stream, openOptions);
// 保存为 .sjs 文件
workbook.save("OpenSjsWithOpenOptions.sjs");


形状文本的对齐选项
GcExcel在ITextRange接口中添加了新的TextAlignment属性,用于获取或设置形状中文本范围或段落的对齐方式。该属性可以给文本设置对齐方式,如左对齐、右对齐、居中、分散和两端对齐。在需要按照UI设计规则或按照数据格式对齐文本(例如将文本左对齐或将数字右对齐)的场景中非常有帮助。
以下代码用于展示将形状中多个段落的对齐方式设置为居中和左对齐:
IShape shape = worksheet.Shapes.AddShape(AutoShapeType.RoundedRectangle, (double)10, (double)10, (double)320, (double)150);
shape.TextFrame.TextRange.TextAlignment = TextAlignmentAnchor.Left;
shape.TextFrame.TextRange.Font.Name = "Calibri";
shape.TextFrame.TextRange.Font.Size = 16;
shape.TextFrame.TextRange.Font.Color.RGB = Color.Black;
shape.TextFrame.TextRange.Font.Underline = TextUnderlineType.None;
shape.TextFrame.TextRange.Paragraphs.Add("Quarterly Results");
shape.TextFrame.TextRange.Paragraphs[0].TextAlignment = TextAlignmentAnchor.Center;
shape.TextFrame.TextRange.Paragraphs[0].Font.Size = 28;
shape.TextFrame.TextRange.Paragraphs[0].Font.Underline = TextUnderlineType.Single;
shape.TextFrame.TextRange.Paragraphs.Add("");
shape.TextFrame.TextRange.Paragraphs.Add("Business Domain: E-Commerce");
shape.TextFrame.TextRange.Paragraphs[2].TextAlignment = TextAlignmentAnchor.Left;
shape.TextFrame.TextRange.Paragraphs.Add("Quarter: Q4");
shape.TextFrame.TextRange.Paragraphs[3].TextAlignment = TextAlignmentAnchor.Left;

在形状和图表中设置垂直文本方向
在某些文档应用中,使用者希望将文本方向设置为垂直方向。GcExcel在形状和图表的API中添加了Direction属性:
- IShape.TextFrame.Direction:用于形状的文本方向。
- ITickLabels.Direction:用于图表轴上刻度标签的文本方向。
- IChartTitle.Direction 或 IChartTitle.TextFrame.Direction:用于图表标题的文本方向。
- IAxisTitle.Direction 或 IAxisTitle.TextFrame.Direction:用于坐标轴标题的文本方向。
- IDataLabels.Direction:用于指定系列数据标签的文本方向。
- IDataLabel.Direction 或 IDataLabel.TextFrame.Direction:用于图表数据点上数据标签的文本方向。
Direction属性接受TextDirection枚举选项,可设置文本在以下方向上的方向:
- TextDirection.Horizontal:表示文本水平显示。
- TextDirection.Vertical:表示文本垂直显示。
- TextDirection.Rotate90:表示文本将旋转90度。
- TextDirection.Rotate270:表示文本将旋转270度。
- TextDirection.Stacked:表示文本将堆叠显示,读取顺序从左到右。
- TextDirection.StackedRtl:表示文本将堆叠显示,读取顺序从右到左。
以下代码用以将文本的TextDirection设置为Stacked方向:
var shape = worksheet.Shapes.AddShape(AutoShapeType.Rectangle, worksheet.Range["C2:F12"]);
shape.TextFrame.TextRange.Add("欢迎来到葡萄城");
//将文本方向设置为堆叠,并且文本的阅读顺序从左到右。
shape.TextFrame.Direction = TextDirection.Stacked;

支持双面打印 - 该特性仅适用于.NET版本
有时候使用者需要在一页的两面打印一个包含长工作表的工作簿。GcExcel .NET提供了PrintOutOptions类中的Duplex枚举来启用/禁用页面上的双面打印。该枚举共有四个选项,用户可以根据需要选择打印工作簿的方式:
Duplex.Default:表示打印机的默认双面打印设置。
Duplex.Simplex:表示单面打印。
Duplex.Vertical: 表示双面垂直打印。
Duplex.Horizontal: 表示双面水平打印。
以下代码用于 展示将以双面垂直打印方式打印三份工作簿副本。
// 创建打印选项。
PrintOutOptions options = new PrintOutOptions();
// 设置打印的打印机名称为 "Printer"。
options.ActivePrinter = "Printer";
// 打印3份副本。
options.Copies = 3;
// 设置双面垂直打印。
options.Duplex = System.Drawing.Printing.Duplex.Vertical;
// 使用 "Printer" 打印此工作簿。
workbook.PrintOut(options);
2. 服务端 PDF 组件 GrapeCity Documents for PDF 更新说明
对PDF文件打开和保存进行增强
在GcExcel V6.0 Update 2 版本中,GcPdf在处理由其他软件生成的现有PDF文档方面进行了改进,并提供以下优势:
- GcPdf现在可以加载和保存可能不严格符合PDF规范的PDF文档。
- GcPdf将保留嵌入在PDF文档中的任何非PDF规范的自定义数据。
- 加载PDF文档的平均速度得到了改善。
这些改进使得GcPdf能够更好地处理各种PDF文档,即使这些文档不是完全符合PDF规范或包含一些非标准的数据。同时,加载PDF文档的速度也得到了提升。
在密码未知的情况下处理受密码保护的文件
GcPdf允许在不指定密码的情况下处理受密码保护的文件。在加载受密码保护的文件后,您可以执行以下操作而无需指定密码:
- 读取/写入不基于PDF字符串对象的属性,例如:
- 您可以获取/设置CheckBoxField或RadioButtonField的值。
- 获取某个文档的特定统计信息,例如获取页面数、注释数等。
- 获取或更改文档元数据,因为元数据通常未加密。
- 更改某些类型字段的值:CheckBoxField、RadioButtonField;可以更改TextBoxField、CombTextField的值,但有一些限制。
- 如果可以在不使用PDF字符串的情况下定义新对象,您可以添加该对象。例如,您可以向一个页面或所有页面添加一个SquareAnnotation。
新增了DecryptionOptions类来表示解密选项。当加载加密的PDF时,您可以将其作为(可选)参数传递给GcPdfDocument.Load()方法。通过将DecryptionOptions.ThrowExceptionIfInvalidPassword设置为false(默认为true),以允许加载受密码保护的PDF而无需指定其密码。另一个相关的标志是DecryptionOptions.ThrowExceptionIfUnsupportedSecurityOptions,默认情况下也为true。将其设置为false可以允许GcPdf加载具有未知或损坏的安全处理程序的文档。
以下代码示例展示了如何向受密码保护的PDF添加注释,而无需指定密码:
using var fs = File.OpenRead("financial-report.pdf");
var doc = new GcPdfDocument();
doc.Load(fs, new DecryptionOptions() { ThrowExceptionIfInvalidPassword = false, ThrowExceptionIfUnsupportedSecurityOptions = false });
// 获取第一页的尺寸:
var page = doc.Pages[0];
var pageSize = page.Size;
// 添加一个方形注释:
SquareAnnotation sa = new SquareAnnotation();
sa.Page = page;
sa.Rect = new RectangleF(10, 10, pageSize.Width - 20, pageSize.Height - 20);
sa.Color = Color.Red;
doc.Save("AnnotationAdded.pdf");


3. 服务端 Word 组件 GrapeCity Documents for Word 更新说明
对于Office Math函数和转换为MathML的支持
在新版本中,GcWord支持在Word文档中创建和编辑Office Math内容。GcWord中的OMath支持包括完整的API,用于处理在科学、数学和通用目的的Word文档中广泛使用的数学符号、公式和方程。以下是OMath支持引入的新API的主要亮点:
- 用于表示GcWord中的Office Math内容的两个主要类是OMathParagraph和OMath。OMathParagraph表示带有Office Math内容的段落,而OMath表示内联的Office Math区域,可以包含在OMathParagraph或常规段落中。
- 提供了专门的类(如OMathFunction、OMathEquationArray、OMathRadical等),用于表示OMath区域中的各种数学结构。这些类都是从通用的抽象OMathStruct基类派生而来。
- 可以通过新的RangeBase属性(OMathParagraphs、OMaths、OMathStructs、OMathElements和OMathMatrixRows)访问Office Math内容。
- 为了方便添加MS Word支持的内置方程,RangeBase、OMathParagraph、OMath和OMathElement类上提供了方便的Add/Insert方法,接受一个OMathBuiltInEquation枚举值,用于识别所需的方程。
- 包含一个实用的MathMLConverter类,可以方便地在GcWord的OMath内容和MathML之间进行转换。
有关GcWord中OMath支持的详细信息,请参阅Office Math文档。
以下代码用于展示使用OMath类和其函数将一个方程添加到Word文件中的过程。
var sampleDoc = new GcWordDocument();
var om = sampleDoc.Body.AddParagraph().AddOMathParagraph().AddOMath();
om.AddRun("Γ").Font.Italic = false;
om.AddDelimiter(new string[] { "z" });
om.AddRun("=");
var nary = om.AddNary("", "0", "∞", "∫");
nary.Base.AddSuperscript("t", "z-1");
nary.Base.AddSuperscript("e", "-t");
nary.Base.AddRun("dt");
om.AddRun("=");
var frac = om.AddFraction();
var superscript = frac.Numerator.AddSuperscript("e", "-");
superscript.Superscript.AddRun("γ").Font.Bidi = true;
superscript.Superscript.AddRun("z");
frac.Denominator.AddRun("z");
nary = om.AddNary("", "k=1", "∞", "∏");
superscript = nary.Base.AddSuperscript("", "-1");
var delimiter = superscript.Base.AddDelimiter();
var item = delimiter.Items.Add();
item.AddRun("1+");
item.AddFraction("z", "k", null);
superscript = nary.Base.AddSuperscript("e", "z");
superscript.Superscript.AddRun("/").OMathFormat.IsLiteral = true;
superscript.Superscript.AddRun("k");
om.AddRun(", γ≈0.577216");
sampleDoc.Save("MathEquation.docx");

以上GrapeCity Documents V6.2的新特性介绍,如果您对产品感兴趣,欢迎前往葡萄城官网下载产品安装包,同步体验GrapeCity Documents V6.2的全新功能。
GrapeCity Documents V6.0 Update 2发布,新增支持SpreadJS的.sjs文件格式的更多相关文章
- [转]Ubuntu Tweak 0.8.7 发布:支持 Ubuntu 14.04
原文网址:http://www.oschina.net/news/51054/ubuntu-tweak-0-8-7 这是我开发 Ubuntu Tweak 七年以来第一次没在 Ubuntu 正式发布之前 ...
- VMware vSphere 7.0 Update 2 发布 - 数据中心虚拟化和 Kubernetes 云原生应用引擎
2021 年 3 月 9 日,VMware 发布了 vSphere 7 Update 2.它可以通过 VMware Customer Connect 和 vSphere Lifecycle Manag ...
- Excelize 2.4.0 正式版发布, 新增 152 项公式函数支持
Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准.可以使用它来读取.写入由 Microsoft Exc ...
- Swoole 4.1.0 正式版发布,支持原生 Redis/PDO/MySQLi 协程化
重大新特性 支持 Redis/PDO/MySQLi 从4.1.0版本开始支持了对PHP原生Redis.PDO.MySQLi协程化的支持. 可使用Swoole\Runtime::enableCorotu ...
- DevEco Device Tool 3.0 Release 新版本发布,支持多人共享开发
DevEco Device Tool 是面向智能设备开发者提供的一站式集成开发环境,支持 HarmonyOS Connect 的组件按需定制,支持代码编辑.编译.烧录和调试.性能监测等功能,支持 C/ ...
- FineUIPro v6.0.0 大版本更新,快来围观!
本月末(2019-09-20),我们会发布激动人心的 FineUI v6.0.0 版本,这个版本将带来一系列的重要更新! 在列举新版本特性之前,我们先来回顾下每次发布大版本的关键时间点: v1.0.0 ...
- GrapeCity Documents (服务端文档API组件) V3.0 正式发布
近日,葡萄城GrapeCity Documents(服务端文档API组件)V3.0 正式发布! 该版本针对 Excel 文档.PDF 文档和 Word 文档的 API 全面更新,加入了用于生成 Exc ...
- TypeScript 0.9.1 发布,新增 typeof 关键字
TypeScript 0.9.1 发布了,该版本提升了编译器和语言的性能,增加新的语言特性 typeof ,更好的 this 处理等.详细介绍请看发行说明. TypeScript 是微软新推出的一种语 ...
- 2019 年 GrapeCity Documents 产品路线图
前言 | 问题背景 随着软件行业引入新的硬件和操作系统,我们看到更多的托管框架与.NET技术保持同步.Microsoft的.NET Standard和.NET Core定义了一个跨平台规范,为应用程序 ...
- powershell V6.0登基之:《瘸腿脚本大帝进攻linux!》
------[前言]------ 每个ps大版本发布,我都会写个消息. 这次的,主标题就叫:powershell v6.0登基副标题就叫:<瘸腿脚本大帝进攻linux!> ------[p ...
随机推荐
- 解密Prompt7. 偏好对齐RLHF-OpenAI·DeepMind·Anthropic对比分析
前三章都围绕指令微调,这一章来唠唠RLHF.何为优秀的人工智能?抽象说是可以帮助人类解决问题的AI, 也可以简化成3H原则:Helpful + Honesty + Harmless.面向以上1个或多个 ...
- Cesium开发案例整理
weigis近几年越来越被人们所关注,但是二三维开发难度也比普通web要高出许多,不管我们是在在开发或者是学习过程中,往往需要耗费大量的时间去查阅资料,和研究官方案例, 而大多二三维的包(openla ...
- 代码随想录算法训练营Day45 动态规划
代码随想录算法训练营 代码随想录算法训练营Day45 动态规划|70. 爬楼梯(进阶) 322. 零钱兑换 70. 爬楼梯 (进阶) 题目链接:70. 爬楼梯 (进阶 假设你正在爬楼梯.需要 n 阶你 ...
- LeetCode 周赛 347(2023/05/28)二维空间上的 LIS 最长递增子序列问题
本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 往期回顾:LeetCode 单周赛第 346 场 · 仅 68 人 AK 的最短路问题 周赛 347 概览 ...
- [ 基于宝塔部署 ] 恋爱博客 -- Like_Girl 5.0
1)环境准备 云服务器 [ CentOS 7 ] 域名解析 love.daxiaoba.cool 宝塔面板 yum install -y wget && wget -O install ...
- 驱动开发:内核扫描SSDT挂钩状态
在笔者上一篇文章<驱动开发:内核实现SSDT挂钩与摘钩>中介绍了如何对SSDT函数进行Hook挂钩与摘钩的,本章将继续实现一个新功能,如何检测SSDT函数是否挂钩,要实现检测挂钩状态有两种 ...
- 如何在2023年开启React项目
在这里,我想给你一个新的React项目入门的简要概述.我想反思一下优点和缺点,反思一下作为一个开发者所需要的技术水平,反思一下作为一个React开发者,每个启动项目都能为你提供哪些功能.最后,你将了解 ...
- P8933 [JRKSJ R7] 技巧性的块速递推 题解
题目传送门 题意: 简单来说就是一个涂色游戏. 有一个 n×m 的棋盘需要涂色. 每格只能涂黑色或白色两种颜色. 横.竖.斜连续 3 格颜色不能相同. 横.竖.斜连续 4 格颜色不能有 3 个相同颜色 ...
- Linux多线程(8.3 线程同步与互斥)
3. 线程的同步与互斥 为什么需要同步与互斥 一个进程运行时,数据存储在内存中.如果一个数据要进行运算,必须先将数据拷贝到寄存器中.比如要对栈上的一个int i进行"++"操作 ...
- 【技术积累】Vue.js中的基础概念与语法【一】
写在前面 学习Vue之前最好有前端三驾马车的基础[HTML+CSS+JavaScript] 笔者接了一个从头开发的Vue项目,由于公司急着要,没有时间慢慢像在学校里学了,只能边学边做,现在项目雏形已经 ...