C#合并多个Word文档(微软官方免费openxml接口)

g

cs 复制代码
 /// <summary>
        /// 合并多个word文档(合并到第一文件)
        /// </summary>
        /// <param name="as_word_paths">word文档完整路径</param>
        /// <param name="breakNewPage">true(默认值),合并下一个文档前,自动换页</param>
        /// <returns>无</returns> 
public void MergeWordFiles(string[] as_word_paths, bool breakNewPage = true)
        {
            var ls_first_word = as_word_paths.Length > 0 ? as_word_paths[0] : "";
            if (ls_first_word.fn_isempty())
            {
                return;
            }
            using (WordprocessingDocument doc = WordprocessingDocument.Open(ls_first_word, true))
            {
                var mainPart = doc.MainDocumentPart;
                for (var i = 1; i < as_word_paths.Length; i++)
                {
                   
                    var altChunkId = "cid_" + Guid.NewGuid().ToString().Replace("-", "");
                    var chunk = mainPart.AddAlternativeFormatImportPart(AlternativeFormatImportPartType.WordprocessingML, altChunkId);
                    //mainPart.Document.Save();
                    using (FileStream fileStream = File.Open(as_word_paths[i], FileMode.Open))
                    {
                        chunk.FeedData(fileStream);
                    }
                    var altChunk = new DocumentFormat.OpenXml.Wordprocessing.AltChunk();
                    altChunk.Id = altChunkId;
                    //添加下一页(下一个文档合并此页)
                    if (breakNewPage)
                    {
                        Paragraph newPage = new Paragraph(new Run
                         (new Break() { Type = BreakValues.Page }
                         ));
                        mainPart.Document.Append(newPage, altChunk);
                    }
                    else
                    {
                        mainPart.Document.Append(altChunk);
                    }
                    //mainPart.Document.Body.Append(altChunk);
                }
                //mainPart.Document.Body.InsertAfter(altChunk, mainPart.Document.Body.Elements<DocumentFormat.OpenXml.Wordprocessing.Paragraph>().Last());
                mainPart.Document.Save();
               
            }
        }

详情了解...

相关推荐
Stack Overflow?Tan9035 分钟前
c++实现在同一台主机两个程序实现实时通信
开发语言·c++
MZWeiei35 分钟前
Scala:case class(通俗易懂版)
开发语言·后端·scala
闯闯桑37 分钟前
scala 中的@BeanProperty
大数据·开发语言·scala
计算机老学长38 分钟前
基于Python的商品销量的数据分析及推荐系统
开发语言·python·数据分析
MZWeiei42 分钟前
scala有关 类 的知识点与Java的比较
开发语言·scala
飞向星河1 小时前
SV学习笔记——数组、队列
笔记·学习·c#
&白帝&1 小时前
Java @PathVariable获取路径参数
java·开发语言·python
青红光硫化黑2 小时前
React基础之项目创建
开发语言·javascript·ecmascript
小鹏编程2 小时前
【C++教程】C++中的基本数据类型
开发语言·c++·教程·少儿编程