最常见和广泛使用的文字处理文件格式是 DOC、DOCX 和 ODT。著名的 Microsoft Word 和 OpenOffice Writer 支持这些格式,我们通常使用这些格式来起草文档。因此,作为开发人员,我们广泛需要在我们的应用程序中以编程方式编辑 Word 文档。在本文中,我们将讨论**如何使用 C# 编辑 Word 文档,使用 .NET API 进行文档编辑。
以下是本文简要讨论的主题:
用于 Word 文档编辑和自动化的 .NET API
在本文中,我将在 C# 示例中使用 GroupDocs.Editor for .NET,它是文档编辑 API,允许开发人员使用 WYSIWYG HTML 编辑器加载、编辑和保存各种文档格式。除了文字处理文档格式,API 还支持编辑电子表格、演示文稿、HTML、XML、TXT、DSV、TSV 和 CSV 格式。
从 下载部分 下载 DLLs 或 MSI 安装程序,或通过 NuGet 在您的 .NET 应用程序中安装 API。
PM> Install-Package GroupDocs.Editor
在 C# 中编辑 Word 文档
设置 API 后,您可以快速开始编辑 Word 文档。以下步骤将让您编辑文字处理文档。
- 加载 Word 文档。
- 使用选项进行相应编辑。
- 保存编辑的文档。
加载Word文档
首先,如果文档受到保护,请通过提供文档路径和密码来加载文档。
using (FileStream fs = File.OpenRead(inputFilePath))
{
Options.WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
loadOptions.Password = "password-if-any";
}
编辑Word文档
加载后,您可以根据需要编辑加载的文档。在这里,我使用下面的 C# 代码将 Word 文档中所有出现的单词“document”替换为“edited document”。
using (Editor editor = new Editor(delegate { return fs; }, delegate { return loadOptions; }))
{
Options.WordProcessingEditOptions editOptions = new WordProcessingEditOptions();
editOptions.FontExtraction = FontExtractionOptions.ExtractEmbeddedWithoutSystem;
editOptions.EnableLanguageInformation = true;
editOptions.EnablePagination = true;
using (EditableDocument beforeEdit = editor.Edit(editOptions))
{
string originalContent = beforeEdit.GetContent();
List<IHtmlResource> allResources = beforeEdit.AllResources;
string editedContent = originalContent.Replace("document", "edited document");
}
}
使用选项保存编辑后的 Word 文档
最后,在保存编辑的文档内容的同时,您可以进一步设置各种选项。这些选项包括:分页、设置密码、区域设置、保护或内存优化设置。我在下面提到的代码中设置了上述选项,并将编辑后的文档保存为受密码保护的只读 DOCX 文件。
using (EditableDocument afterEdit = EditableDocument.FromMarkup(editedContent, allResources))
{
Options.WordProcessingSaveOptions saveOptions = new WordProcessingSaveOptions(WordProcessingFormats.Docx);
saveOptions.EnablePagination = true;
saveOptions.Locale = System.Globalization.CultureInfo.GetCultureInfo("en-US");
saveOptions.OptimizeMemoryUsage = true;
saveOptions.Password = "password";
saveOptions.Protection = new WordProcessingProtection(WordProcessingProtectionType.ReadOnly, "write\_password");
using (FileStream outputStream = File.Create("filepath/editedDocument.docx"))
{
editor.Save(afterEdit, outputStream, saveOptions);
}
}
完整代码
为方便起见,我展示了上面解释的完整 C# 示例,它编辑 Word 文档,然后将其保存为 DOCX 格式。
// 使用 GroupDocs 文档编辑和自动化 API 在 C# 中编辑 Word 文档
using (FileStream fs = File.OpenRead("filepath/document.docx"))
{ // Load Document
Options.WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
loadOptions.Password = "password-if-any";
// 编辑文档
using (Editor editor = new Editor(delegate { return fs; }, delegate { return loadOptions; }))
{
Options.WordProcessingEditOptions editOptions = new WordProcessingEditOptions();
editOptions.FontExtraction = FontExtractionOptions.ExtractEmbeddedWithoutSystem;
editOptions.EnableLanguageInformation = true;
editOptions.EnablePagination = true;
using (EditableDocument beforeEdit = editor.Edit(editOptions))
{
string originalContent = beforeEdit.GetContent();
List<IHtmlResource> allResources = beforeEdit.AllResources;
string editedContent = originalContent.Replace("document", "edited document");
// 保存文档
using (EditableDocument afterEdit = EditableDocument.FromMarkup(editedContent, allResources))
{
WordProcessingFormats docxFormat = WordProcessingFormats.Docx;
Options.WordProcessingSaveOptions saveOptions = new WordProcessingSaveOptions(docxFormat);
saveOptions.EnablePagination = true;
saveOptions.Locale = System.Globalization.CultureInfo.GetCultureInfo("en-US");
saveOptions.OptimizeMemoryUsage = true;
saveOptions.Password = "password";
saveOptions.Protection = new WordProcessingProtection(WordProcessingProtectionType.ReadOnly, "write_password");
using (FileStream outputStream = File.Create("filepath/editedDocument.docx"))
{
editor.Save(afterEdit, outputStream, saveOptions);
}
}
}
}
}
以下是使用上述代码替换所有匹配项的输出文档。
结论
最后,我们讨论了使用 .NET 应用程序的文档编辑 API 在 C# 中编辑 Word 文档。您可以将 API 与 WYSIWYG 编辑器一起使用,以对文档进行可视化编辑。之后,您可以继续构建自己的文档编辑器。同样,您也可以在 .NET 应用程序中集成编辑功能。
有关更多详细信息、选项和示例,您可以访问 文档 和 GitHub 存储库。如需进一步查询,请联系 论坛 上的支持人员。