Spire.Office 11.7.0 已正式发布。该版本新增了一些功能,如Spire.XLS 新增属性避免因页眉/页脚文本过长而触发异常;Spire.Presentation 支持保存宏文件以及管理 VBA 模块,包括添加和删除 VBA 模块。除此之外,一些在操作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: 14.7.5
- Spire.Pdf.dll: 12.6.9
- Spire.XLS.dll: 16.6.3
- Spire.Presentation.dll: 11.6.11
- Spire.Barocde.dll: 7.5.0
- Spire.DocViewer.dll: 8.9.5
- Spire.Email.dll: 6.8.0
- Spire.OfficeViewer.dll: 8.8.1
- Spire.PdfViewer.Asp.dll: 8.3.0
- Spire.PdfViewer.Forms.dll: 8.3.0
- Spire.Spreadsheet.dll: 7.5.3
获取Spire.Office 11.7.0,请点击:
https://www.e-iceblue.cn/Downloads/Spire-Office-NET.html
Spire.XLS
新功能:
- 添加了 ValidateHeaderFooterLength 属性,避免 Excel 转 PDF 时因页眉/页脚文本过长而触发异常。
workbook.ConverterSetting.ValidateHeaderFooterLength = false;
问题修复:
- 修复了应用多个许可证时无法生效的问题。
- 修复了设置单元格的 NumberFormat 后无法生效的问题。
- 修复了 Excel 转 PDF 时图片位置错位的问题。
- 修复了 CalculateAllValue() 方法返回错误公式结果的问题。
- 修复了 Excel 转 PDF 时分页不正确的问题。
Spire.Presentation
新功能:
- 新增 FileFormat.Pptm 枚举类型,支持保存宏文件。
- 支持添加 VBA 模块。
- 支持删除 VBA 模块。
Presentation ppt = new Presentation();
//添加VBA项目到文档
IVbaProject vbaProject = ppt.VbaProject;
vbaProject.Name = "SampleVBAMacro";
vbaProject.CodePage = 936; //设置编码,支持中文
IVbaModule vbaModule = vbaProject.Modules.Add("SampleModule", VbaModuleType.Module);
vbaModule.SourceCode = @"
Sub ExampleMacro()
' 声明变量
Dim pptPres As Object
Dim pptSlide As Object
Dim pptShape As Object
' 设置引用到当前演示文稿
Set pptPres = ActivePresentation
' 遍历所有幻灯片
Dim i As Integer
For i = 1 To pptPres.Slides.Count
Set pptSlide = pptPres.Slides(i)
' 为每张幻灯片添加标题文本 (msoTextOrientationHorizontal = 1)
Set pptShape = pptSlide.Shapes.AddTextbox(1, 50, 50, 600, 50)
pptShape.TextFrame.TextRange.Text = ""幻灯片 "" & i & "" - 由宏自动生成""
With pptShape.TextFrame.TextRange.Font
.Bold = -1 ' msoTrue = -1
.Size = 24
.Color.RGB = RGB(0, 102, 204)
End With
Next i
' 显示完成消息
MsgBox ""宏执行完成!已处理 "" & pptPres.Slides.Count & "" 张幻灯片。"", vbInformation, ""操作提示""
End Sub";
ppt.SaveToFile("result.pptm", FileFormat.Pptm);
ppt.Dispose();
//按名称移除模块
Presentation ppt1 = new Presentation();
ppt1.LoadFromFile(inputFile);
IVbaModule firstModule = ppt1.VbaProject.Modules[0];
sb.AppendLine("【按名称移除】");
sb.AppendLine("模块名称:" + firstModule.Name);
sb.AppendLine("模块类型:" + firstModule.Type);
sb.AppendLine("删除前模块数量:" + ppt1.VbaProject.Modules.Count);
ppt1.VbaProject.Modules.Remove(firstModule.Name);
sb.AppendLine("删除后模块数量:" + ppt1.VbaProject.Modules.Count);
ppt1.SaveToFile("result1.pptm", FileFormat.Pptm);
ppt1.Dispose();
//按索引移除模块
Presentation ppt2 = new Presentation();
ppt2.LoadFromFile(inputFile);
sb.AppendLine("【按索引移除(0)】");
sb.AppendLine("删除前模块数量:" + ppt2.VbaProject.Modules.Count);
ppt2.VbaProject.Modules.RemoveAt(0);
sb.AppendLine("删除后模块数量:" + ppt2.VbaProject.Modules.Count);
ppt2.SaveToFile("result2.pptm", FileFormat.Pptm);
ppt2.Dispose();
//按VbaModule对象移除模块(强制转换为具体类型)
Presentation ppt3 = new Presentation();
ppt3.LoadFromFile(inputFile);
IVbaModule moduleObj = ppt3.VbaProject.Modules[4];
VbaModule vbaModule = (VbaModule)moduleObj;
sb.AppendLine("【按对象移除】");
sb.AppendLine("模块名称:" + vbaModule.Name);
sb.AppendLine("模块类型:" + vbaModule.Type);
sb.AppendLine("删除前模块数量:" + ppt3.VbaProject.Modules.Count);
ppt3.VbaProject.Modules.Remove(vbaModule);
sb.AppendLine("删除后模块数量:" + ppt3.VbaProject.Modules.Count);
ppt3.SaveToFile("result3.pptm", FileFormat.Pptm);
ppt3.Dispose();
//清空所有模块
Presentation ppt4 = new Presentation();
ppt4.LoadFromFile(inputFile);
sb.AppendLine("【清空Clear】");
sb.AppendLine("删除前模块数量:" + ppt4.VbaProject.Modules.Count);
ppt4.VbaProject.Modules.Clear();
sb.AppendLine("删除后模块数量:" + ppt4.VbaProject.Modules.Count);
ppt4.SaveToFile("result4.pptm", FileFormat.Pptm);
问题修复:
- 修复了应用多个许可证不生效的问题。
Spire.PDF
问题修复:
- 修复了应用多个许可证不生效的问题。
- 修复了向虚拟打印机发送 PDF 时,打印文件名错误的问题。
- 修复了提取 PDF 页面文本时,部分内容出现重复的问题。
- 修复了转换 OFD 到 PDF 时,程序抛出 “OFD 解析失败”异常的问题。
Spire.PdfViewer
问题修复:
- 修复了预览 PDF 文件报 “ArgumentNullException” 的问题。







