如何在 .NET 中导出和保存 Word 文档
本指南展示了如何使用 Aspose.Words FOSS 为 .NET 导出和保存 Word 文档:使用推断或显式格式进行保存、配置 OOXML 保存选项、导出为 Markdown、导出为纯文本,以及在转换之前检测文件的格式。Aspose.Words FOSS 为 .NET 可通过 NuGet 获取,或通过源码构建。
分步指南
步骤 1:获取库
克隆仓库并进行构建 Aspose.Words.sln 在 Release 配置下,然后添加项目引用到 Aspose.Words.csproj 从您自己的 .NET 项目中,如文档所述 安装指南。 添加 using Aspose.Words; 在任何保存文档的文件顶部。
步骤 2:使用推断或显式格式进行保存
Document.Save(fileName) 从文件扩展名推断目标格式。Save(fileName, saveFormat) 通过接受 SaveFormat 枚举值,使格式无论扩展名如何都显式指定;Save(fileName, saveOptions)(或相匹配的 Stream 重载)接受 SaveOptions 子类,以进行特定格式的控制。SaveOptions.CreateSaveOptions(saveFormat) 是一个静态工厂,返回对应的选项子类,并已为给定的 SaveFormat 设置好默认值。此版本能够完整地对 DOCX、DOCM、DOTX、DOTM 和 Flat OPC(以及它们的宏启用和模板变体)进行双向保存,同时也支持 Markdown 和纯文本。
第3步:配置 OOXML 导出选项
OoxmlSaveOptions 配置将文件保存为任意 Open XML 变体。其 SaveFormat 属性专门选择 DOCX、DOCM、DOTX、DOTM 或 Flat OPC;Password 为已保存的文件设置打开密码,独立于 Document.Protect 的编辑限制;Compliance 选择 OOXML 的严格程度;并且 CompressionLevel / Zip64Mode 控制底层的 ZIP 包装。可使用 new OoxmlSaveOptions(saveFormat) 或通过 SaveOptions.CreateSaveOptions(saveFormat) 构建。
第4步:导出为 Markdown
MarkdownSaveOptions 控制 Markdown 导出:ListExportMode 和 LinkExportMode 决定列表和超链接的渲染方式,ImagesFolder / ImagesFolderAlias 控制提取的图像存放位置及其引用方式,ExportImagesAsBase64 将图像内嵌而不是写入单独文件,TableContentAlignment 影响生成的表格标记。将一个 MarkdownSaveOptions 实例传递给 Document.Save(fileName, saveOptions),并使用 .md 文件名,或显式设置其 SaveFormat。
第5步:导出为纯文本
TxtSaveOptions(通过其共享基类 TxtSaveOptionsBase,该基类也被 MarkdownSaveOptions 使用)控制纯文本导出:Encoding 设置字符编码,ParagraphBreak 设置换行字符串,MaxCharactersPerLine 自动换行长行,SimplifyListLabels 将列表项目符号和编号规范化为普通字符,PreserveTableLayout 使用空格保持表格列对齐。
第6步:在转换前检测格式
在转换未知格式的文件之前,FileFormatUtil.DetectFileFormat(fileName) 返回一个包含检测到的 LoadFormat 的 FileFormatInfo。将其与 FileFormatUtil.LoadFormatToSaveFormat(loadFormat) 配合使用,以在调用 Document.Save 之前检查该格式是否能够在本版支持的格式之间往返。某些 SaveFormat 枚举成员为实现 API 完整性而存在,但该精简的开源版并未实现对应的读取器或写入器;请坚持使用 DOCX/DOCM/DOTX/DOTM/Flat OPC 系列以及 Markdown 和纯文本,以获得可靠的输出。
常见问题与解决方案
Save(fileName) 写入了错误的格式。 文件扩展名与预期的格式不匹配。使用 Save(fileName, saveFormat) or Save(fileName, saveOptions) 使格式明确,而不是依赖扩展名。
已保存的 OOXML 文件无法使用密码打开。 OoxmlSaveOptions.Password 在保存之前未设置。构造一个 OoxmlSaveOptions,设置 Password,并将其传递给 Save.
Markdown 导出会意外地将图像文件散布。 Default MarkdownSaveOptions 此行为会将图像提取为单独的文件。设置 ExportImagesAsBase64 = true 用于生成单个自包含的 Markdown 文件,或设置 ImagesFolder 以控制图像放置位置。
纯文本导出会丢失表格列对齐。 TxtSaveOptions.PreserveTableLayout 保持默认。设置 PreserveTableLayout = true 保存之前。
常见问题
如何在不考虑文件扩展名的情况下保存为特定格式?
使用显式的 SaveFormat 值调用 Save(fileName, saveFormat),或使用匹配的 SaveOptions 子类调用 Save(fileName, saveOptions)。
在此版本中,哪些格式可以双向往返?
DOCX、DOCM、DOTX、DOTM、Flat OPC(包括其宏启用和模板变体)、Markdown 和纯文本。
如何对已保存的文件设置密码保护,使其甚至无法打开?
在 OoxmlSaveOptions 实例上设置 Password,并将其传递给 Document.Save(fileName, saveOptions)。
如何控制导出文本文件的换行符?
在保存之前,在 TxtSaveOptions 实例上设置 ParagraphBreak。
在转换文件之前,如何检查文件的格式?
调用 FileFormatUtil.DetectFileFormat(fileName) 并读取返回的 FileFormatInfo.LoadFormat。