近日,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的全新功能。