Spire.Office 10.5.0 已正式发布。该版本新增了一些功能,如Spire.Doc 支持写出为 MHTML 格式文件;Spire.XLS支持检测并删除Excel中的重复行; Spire.PDF 支持使用 .NET Standard DLL 在 Window 和 Linux 系统中进行打印; Spire.Presentation支持在PPT表格的单元格中插入公式。除此之外,一些在操作Word、Excel、PDF和PPT文档时出现的问题也得以成功解决。更多新功能及问题修复详情如下。
该版本涵盖了最新版的Spire.Doc、Spire.PDF、Spire.XLS、Spire.Presentation、Spire.DataExport、Spire.Barcode、Spire.DocViewer、Spire.PDFViewer、Spire.OfficeViewer、Spire.Email。
版本信息如下:
- Spire.Doc.dll: v13.5.11
- Spire.Pdf.dll: v11.5.9
- Spire.XLS.dll: v15.5.2
- Spire.Presentation.dll: v10.5.10
- Spire.Barcode.dll: v7.3.7
- Spire.Email.dll: v6.6.3
- Spire.DocViewer.Forms.dll: v8.8.4
- Spire.PdfViewer.Asp.dll: v8.1.3
- Spire.PdfViewer.Forms.dll: v8.1.3
- Spire.Spreadsheet.dll: v7.5.2
- Spire.OfficeViewer.Forms.dll: v8.8.0
- Spire.DataExport.dll: 4.9.0
- Spire.DataExport.ResourceMgr.dll: v2.1.0
https://www.e-iceblue.cn/Downloads/Spire-Office-NET.html
Spire.Doc
新功能:
- 支持写出为 MHTML 格式文件。
调整::
- Net(net4.6、4.8)、netcore、netstandard 平台 HarfBuzzSharp、SkiaSharp 升级。
HarfBuzzSharp -> 8.3.0.1, SkiaSharp -> 3.116.1
<PackageReference Include="HarfBuzzSharp" Version="8.3.0.1" />
<PackageReference Include="SkiaSharp" Version="3.116.1" />
<PackageReference Include="System.Buffers" Version="4.5.1" />
<PackageReference Include="System.Memory" Version="4.5.5" />
<PackageReference Include="Microsoft.Win32.Registry" Version="4.5.0" />
<PackageReference Include="System.Security.Cryptography.Pkcs" Version="4.5.0" />
<PackageReference Include="System.Security.Cryptography.Xml" Version="4.7.1" />
<PackageReference Include="System.Security.Permissions" Version="4.5.0" />
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.5.0" />
System.Drawing.Common >= 9.0.0
System.Security.Permissions >= 9.0.0
System.Text.Encoding.CodePages >= 9.0.0
System.Security.Cryptography.Pkcs >= 9.0.0
System.Security.Cryptography.Xml >= 9.0.0
HarfBuzzSharp >=8.3.0.1
问题修复:
- 修复了给合并单元格填充文本,合并丢失的问题。
- 修复了转换 Word 文档到 PDF 文档,内容不正确的问题。
- 修复了转换 MarkDown 文档到 Word 文档, URL 图片显示失败的问题。
- 修复了转换 Word 到 HTML 流文件,程序抛异常 "InvalidOperationException" 的问题。
- 修复了加载 Word 文档,程序抛异常 "未将对象引用设置到对象的实例" 的问题。
- 修复了转换 MarkDown 文档到 Word 文档,程序抛异常 "NullReferenceException" 的问题。
- 修复了 Word 转 PDF 时, 分页不一致的问题。
- 修复了 Word 转 PDF 时, 字体嵌入不正确的问题。
- 修复了加载保存的文档,“Allow row to break across pages” 设置丢失的问题。
- 修复了加载 Word 文档,程序抛 "System.ArgumentException" 的问题。
- 修复了内容控件的值无法修改的问题。
- 修复了合并文件时,程序抛 "System.ArgumentException" 的问题。
Spire.XLS
新功能:
- 支持 RANK.AVG 公式。
workbook.Worksheets[0].Range["E9"].Formula = "=RANK.AVG(10,A1:A6)";
- 支持 RANK.EQ 公式。
//Default descending order workbook.Worksheets[0].Range["E9"].Formula = "=RANK.EQ(10,A1:A6)";
- 支持 PERCENTILE.INC 公式。
workbook.Worksheets[0].Range["D2"].Formula = "=PERCENTILE.INC(\"\", 0.3)";
- 支持 PERCENTILE.EXC 公式。
workbook.Worksheets[0].Range["D2"].Formula = "=PERCENTILE.EXC(\"\", 0.3)";
- 支持 BINOM.DIST 公式。
workbook.Worksheets[0].Range["D2"].Formula = "=BINOM.DIST(A7, A11, A12, FALSE)";
- 支持 BINOM.INV 公式。
workbook.Worksheets[0].Range["D2"].Formula = "=BINOM.INV(A7, A12, A13)";
- 支持 NEGBINOM.DIST 公式。
workbook.Worksheets[0].Range["C10"].Formula = "=NEGBINOM.DIST(10,5,1,TRUE)";
- 支持 BINOM.DIST.RANGE 公式。
workbook.Worksheets[0].Range["C6"].Formula = "=BINOM.DIST.RANGE(10, 2, 5)";
- 支持 BETA.DIST 公式。
workbook.Worksheets[0].Range["C7"].Formula = "=BETA.DIST(3, 0, 5, TRUE, 1, 5)";
- 支持 BETA.INV 公式。
workbook.Worksheets[0].Range["C7"].Formula = "=BETA.INV(0.685470581, 8, -1, 1, 3)";
- 支持 ROUNDBANK 公式。
workbook.Worksheets[0].Range["B3"].Formula = "=ROUNDBANK(1245585, -1)";
- 支持 GAMMA 公式。
workbook.Worksheets[0].Range["B3"].Formula = "=GAMMA(ss)";
- 支持 GAMMA.DIST 公式。
workbook.Worksheets[0].Range["B10"].Formula = "=GAMMA.DIST(10.0001131, 9, 0, TRUE)";
- 支持 GAMMA.INV 公式。
workbook.Worksheets[0].Range["B10"].Formula = "=GAMMA.INV(0.068094, 0, 2)";
- 支持 TAKE 公式。
workbook.Worksheets[0].Range["J16"].Formula = "=TAKE(A1:F6,3)";
- 支持 HSTACK 公式。
workbook.Worksheets[0].Range["G26"].Formula = "=HSTACK(E1:F7,G1:G6)";
- 支持在一行多列的合并单元格设置自适应行高。
Workbook workbook = new Workbook(); workbook.LoadFromFile(@"in.xlsx"); Worksheet sheet= workbook.Worksheets[0]; AutoFitterOptions options = new AutoFitterOptions(); options.AutoFitMergedCells = true; // 第一个参数是合并后的行 sheet.AutoFitRow(9, 1, sheet.LastColumn, options); workbook.SaveToFile(@"out.xlsx", Spire.Xls.FileFormat.Version2016); workbook.Dispose();
- 支持 GAMMALN.PRECISE,LOGNORM.INV,LOGNORM.DIST,和GAUSS公式。
sheet.Range["C2"].Formula = "=GAUSS(A1)"; sheet.Range["C3"].Formula = "=LOGNORM.DIST(A2, A3, A4, A5)"; sheet.Range["C4"].Formula = "=GAMMALN.PRECISE(1.5)"; sheet.Range["C5"].Formula = "=LOGNORM.INV(0.5, 0, 1)";
- 支持判断Excel中的重复行并进行删除。
// 删除工作表中的重复行 sheet.RemoveDuplicates(); // 删除指定单元格范围内的重复行 sheet.RemoveDuplicates(int startRow, int startColumn, int endRow, int endColumn); // 根据特定列和标题删除重复行 sheet.RemoveDuplicates(int startRow, int startColumn, int endRow, int endColumn, boolean hasHeaders, int[] columnOffsets)
- 新增支持函数(TRIMRANGE、ERF.PRECISE、ERFC.PRECISE、PERMUTATIONA)。
sheet.Range["A45"].Formula = "=TRIMRANGE(A1:H10, 1, 1)"; sheet.Range["B4"].Formula = "=ERF.PRECISE(1)"; sheet.Range["B4"].Formula = "=ERFC.PRECISE(NULL)"; sheet.Range["B9"].Formula = "=PERMUTATIONA(A5,A5)";
问题修复:
- 修复了转换 Excel 到 PDF,内容显示不完整的问题。
- 修复了加载 Excel 文档,程序抛 "ArgumentOutOfRangeException" 异常的问题。
- 修复了转换 Excel 到 PDF,数据不正确的问题。
- 修复了转换 Excel 到 PDF,图表不正确的问题。
- 修复了转换 Excel 到 PDF,内容被拉伸的问题。
- 修复了保存 Excel 文档,结构保护密码丢失的问题。
- 修复了设置 "FormatConditionType.ColorScale" 效果不正确的问题。
- 调整了在系统没有字体的情况下不再抛 "InvalidOperationException: Cannot found font installed on the system" 错误。
- 修复了 Excel 转 PDF 时,设置 SheetFitToPage=true 数据显示不完整的问题。
- 修复了 Excel转 PDF 时,内容不一致的问题。
- 修复了 Excel转 PDF 时,一些文本显示不正确的问题。
- 修复了设置 ColumnWidth 的 XML 数据不符合 OpenXML 规范的问题。
- 修复了修改工作表的行数,关联的工作表更新失败的问题。
- 修复了保存的 Excel,形状不正确的问题。
- 修复了获取 IFERROR 公式值不正确的问题。
- 修复了获取单元格文本字体不正确的问题。
- 修复了排序效果不正确的问题。
- 修复了加载Excel文档抛“ArgumentOutOfRangeExceltion”问题。
Spire.PDF
新功能:
- 支持获取按钮中的PdfHideAction。
// 加载PDF文档 PdfDocument doc = new PdfDocument(); doc.LoadFromFile(inputFile); // 创建StringBuilder类的对象 StringBuilder sb = new StringBuilder(); // 获取文档中的表单 PdfFormWidget formWidget = doc.Form as PdfFormWidget; // 遍历每一个表单域 for (int i = 0; i < formWidget.FieldsWidget.List.Count; i++) { PdfField field = formWidget.FieldsWidget.List[i] as PdfField; // 获取ButtonField if (field is PdfButtonWidgetFieldWidget) { PdfButtonWidgetFieldWidget buttonField = field as PdfButtonWidgetFieldWidget; // 获取表单域名 string filename = buttonField.Name; // 获取动作 PdfAction action = buttonField.Actions.MouseDown; if (buttonField.Actions.MouseDown != null && buttonField.Actions.MouseDown is PdfHideAction) { var btnAction = (PdfHideAction)buttonField.Actions.MouseDown; sb.AppendLine(filename + "-MouseDown-Hide-" + btnAction.IsHide.ToString()); sb.AppendLine(filename + "-MouseDown-fname-" + btnAction.FieldName[0].ToString()); } } } File.WriteAllText(outputFile, sb.ToString()); doc.Dispose();
- 支持使用 .NET Standard DLL 在Window和Linux 系统中进行打印
PdfDocument doc = new PdfDocument(); doc.LoadFromFile(pdffile); doc.PrintSettings.SelectPageRange(1, 5); if(doc.PrintSettings.CanDuplex) { doc.PrintSettings.Duplex = PdfDuplex.Vertical; } doc.Print();
问题修复:
- 修复了移除复选框得背景色和边框不生效的问题。
- 修复了转换 PDF 到 A1A 和 A1B 标准时,验证失败的问题。
- 修复了获取不到按钮域的动作的问题。
- 修复了设置背景色,透明度不正确的问题。
- 修复了 PDF 文档中的注释个数获取不正确的问题。
- 修复了提取表格多出内容的问题。
- 修复了获取书签的位置,程序抛异常 System.NullReferenceException:"Object reference not set to an instance of an object." 的问题。
- 修复了输入多行内容到文本框域后,文本被截断的问题。
- 修复了添加 PdfTextMarkupAnnotation 效果不正确的问题。
- 修复了PDF转图片,文字乱码的问题。
- 修复了获取 PdfDocumentLinkAnnotationWidget.Destination,程序抛 "NullReferenceException"的问题。
- 修复了 PdfTextBoxField 输入多行文本,文本被裁切的问题。
- 修复了使用 PdfDocument.IsPasswordProtected,程序抛"PdfDocumentException"异常的问题。
- 修复了 PDF 转图片, 程序抛"ArgumentOutOfRangeException"异常的问题。
- 修复了 TextBox 域中的/DA 结构不正确的问题。
- 修复了保存 PDF 文档,程序报"Empty convert-string"错误的问题。
- 修复了使用 FieldsWidget.BorderColor = PdfRGBColor.Empty,效果不正确的问题。
- 修复了 PDF 转 XPS, 公式字符丢失的问题。
- 修复了保存 PDF 文档时报 “Empty convert-string” 错误的问题。
- 修复了转 PDF 到 PDFA3B 抛 “IndexOutOfRangeException” 错误的问题。
Spire.Presentation
新功能:
- 支持读取Shape的CustomerData数据。
Presentation ppt = new Presentation(); ppt.LoadFromFile(inputFile); List dataList = ppt.Slides[0].Shapes[1].CustomerDataList; Console.WriteLine(dataList.Count); for(int i = 0; i < dataList.Count; i++) { string name = dataList[i].Name; string content = dataList[i].XML; File.WriteAllText(outputFile + name, content); }
- 支持在表格单元格中插入公式。
// 创建PPT文档 Presentation presentation = new Presentation(); Double[] widths = new double[] { 100, 100, 150, 100, 100 }; Double[] heights = new double[] { 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15 }; // 添加表格 ITable table = presentation.Slides[0].Shapes.AppendTable(presentation.SlideSize.Size.Width / 2 - 275, 90, widths, heights); String[,] dataStr = new String[,]{ {"Name", "Capital", "Continent", "Area", "Population"}, {"Venezuela", "Caracas", "South America", "912047", "19700000"}, {"Bolivia", "La Paz", "South America", "1098575", "7300000"}, {"Brazil", "Brasilia", "South America", "8511196", "150400000"}, {"Canada", "Ottawa", "North America", "9976147", "26500000"}, {"Chile", "Santiago", "South America", "756943", "13200000"}, {"Colombia", "Bagota", "South America", "1138907", "33000000"}, {"Cuba", "Havana", "North America", "114524", "10600000"}, {"Ecuador", "Quito", "South America", "455502", "10600000"}, {"Paraguay", "Asuncion","South America", "406576", "4660000"}, {"Peru", "Lima", "South America", "1285215", "21600000"}, {"Jamaica", "Kingston", "North America", "11424", "2500000"}, {"Mexico", "Mexico City", "North America", "1967180", "88600000"} }; // 在表格中添加数据 for (int i = 0; i < 13; i++) for (int j = 0; j < 5; j++) { //Fill the table with data table[j, i].TextFrame.Text = dataStr[i, j]; //Set the Font table[j, i].TextFrame.Paragraphs[0].TextRanges[0].LatinFont = new TextFont("Arial Narrow"); } // 设置对齐方式 for (int i = 0; i < 5; i++) { table[i, 0].TextFrame.Paragraphs[0].Alignment = TextAlignmentType.Center; } string latexMathCode = @"x^{2}+\sqrt{x^{2}+1}=2"; table[2, 3].TextFrame.Paragraphs.AddParagraphFromLatexMathCode(latexMathCode); // 设置表格样式 table.StylePreset = TableStylePreset.LightStyle3Accent1; // 保存结果文件 presentation.SaveToFile("Output.pptx", FileFormat.Pptx2010);
- 新增AddFromSVGAsShape() 方法支持把SVG文件转换成形状Shape。
Presentation ppt = new Presentation(); ppt.Slides[0].Shapes.AddFromSVGAsShapes(file.FullName); ppt.SaveToFile(fileName + ".pptx", FileFormat.Pptx2013); ppt.Dispose();
问题修复:
- 修复了 PPT 转 SVG 后, 形状不正确的问题。
- 修复了修改 PPT 图表中数据后,结果不正确的问题。
- 修复了 PPT 转 PDF 后,效果不正确的问题。
- 修复了加载 PPT 文档程序抛 "FormatException" 的问题。
- 修复了在 PPT 文档中插入 html 内容,效果不正确的问题。
- 修复了PPT转PDF ,一些文本乱码的问题。
- 修复了将GroupShape添加到新的PPT中,程序抛异常“System.NullReferenceException”的问题。
- 修复了将PPT转PDF,文本有丢失的问题。
- 修复了打开使用Presentation.GetStream() 方法保存的文件报错的问题。
- 修复了使用Ungroup() 方法后,形状的位置发生变化的问题。
- 修复了PPT 转SVG,程序抛异常“NullReferenceException”的问题。
- 修复了PPT 转SVG,形状显示不正确的问题。
- 修复了直接加载保存后的文档微软打开提示错误的问题。
- 修复了特定 PPT 文档转 PDF 时,文字内容不正确的问题。
Spire.PDFViewer
问题修复:
- 修复了 PDF 内容预览不正确的问题。
- 修复了水平垂直滚动条效果不正确的问题。
- 修复了设置"Anchor"属性后,控件抛”NullReferenceException“的问题。
Spire.DocViewer
调整::
- 升级了 .NET(.NET 4.6 和 4.8)和 .NET Core 平台的 HarfBuzzSharp 和 SkiaSharp。
HarfBuzzSharp->8.3.0.1、SkiaSharp->3.116.1
Spire.Barcode
调整::
- 新增适配 .NET 9.0 Framework 的 DLL,移除了适配 .NET 7.0 Framework 的 DLL。
- 升级 .NET(net4.6、4.8)、netcore、netstandard 平台上 HarfBuzzSharp 和 SkiaSharp 的版本:
其中 netstandard 引用调整如下:HarfBuzzSharp->8.3.0.1、SkiaSharp->3.116.1
<PackageReference Include="HarfBuzzSharp" Version="8.3.0.1" />
<PackageReference Include="SkiaSharp" Version="3.116.1" />
<PackageReference Include="System.Buffers" Version="4.5.1" />
<PackageReference Include="System.Memory" Version="4.5.5" />
<PackageReference Include="Microsoft.Win32.Registry" Version="4.5.0" />
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.7.0" />
<PackageReference Include="System.Security.Cryptography.Pkcs" Version="4.7.0" />
<PackageReference Include="System.Security.Cryptography.Xml" Version="4.7.1" />
<PackageReference Include="System.Security.Permissions" Version="4.7.0" />
Spire.Email
调整::
- 新增适配 .NET 9.0 Framework 的 DLL,并移除了适配 .NET 7.0 Framework 的 DLL。
- 升级了 Net(net4.6、4.8)、Netcore、NetStandard 平台上 HarfBuzzSharp 和 SkiaSharp 的版本。
HarfBuzzSharp->8.3.0.1、SkiaSharp->3.116.1