Open XML SDK for Office
一、Open XML SDK 简介
源码地址:https://github.com/dotnet/Open-XML-SDK
https://github.com/OpenXmlDev/Open-Xml-PowerTools
API文档:https://learn.microsoft.com/zh-cn/office/open-xml/open-xml-sdk
Open-Xml-PowerTools 是一个基于 Open XML SDK 的开源项目,旨在提供更高级的功能和示例代码,用于处理 Open XML 文档(如 DOCX、XLSX 和 PPTX)。
该项目支持多种场景,包括文件拆分、合并、模板数据填充、高保真转换、内容搜索替换、修订管理、图表更新等。
此内容集提供适用于 Office 的 Open XML SDK 中的强类型类的文档和指南。
SDK 基于 System.IO.Packaging API 构建而成,并提供强类型类来处理符合 Office Open XML 文件格式规范的文档。
Office Open XML 文件格式规范是一个开放的、国际的 ECMA-376、第 5 版 和 ISO/IEC 29500 标准。 The Open XML file formats are useful for developers because they are an open standard and are based on well-known technologies: ZIP and XML.
Open XML SDK 简化了操作 Open XML 包和包中基础 Open XML 架构元素的任务。 Open XML SDK 封装开发人员在 Open XML 包上执行的许多常见任务,因此只需几行代码即可执行复杂的操作。
二、 word文件合并
说明:当前代码只复制段落文字部分
//只复制文档部分 static void MergeWordDocuments(string[] fileNames, string outputFileName) { using (WordprocessingDocument outputDocument = WordprocessingDocument.Create(outputFileName, WordprocessingDocumentType.Document)) { MainDocumentPart mainPart = outputDocument.AddMainDocumentPart(); mainPart.Document = new Document(); Body body = mainPart.Document.AppendChild(new Body()); foreach (string fileName in fileNames) { using (WordprocessingDocument inputDocument = WordprocessingDocument.Open(fileName, false)) { var paragraphs = inputDocument.MainDocumentPart.Document.Body.Elements<Paragraph>(); foreach (var paragraph in paragraphs) { body.AppendChild(paragraph.CloneNode(true)); } } } } }
二、使用xml 文档合并word
此方案存在兼容问题,文字字体样式等转换过程有可能丢失。
static void MergeWithPowerTools(string[] inputFiles, string outputFile) { var sources = new List<OpenXmlPowerTools.Source>(); foreach (var file in inputFiles) { sources.Add(new OpenXmlPowerTools.Source(new WmlDocument(file), true)); } var mergedDoc = DocumentBuilder.BuildDocument(sources); mergedDoc.SaveAs(outputFile); } static void Test2() { MergeWithPowerTools(new string[] { "1.docx", "2.docx" }, "4.docx"); }
更多:
浙公网安备 33010602011771号