c# / openxml将word文档合并为一个,失败-关闭-

本文关键字:一个 失败 关闭 openxml word 文档 合并 | 更新日期: 2023-09-27 18:19:19

我必须将几个word文档合并到一个小的c#控制台应用程序中。到目前为止一切顺利。文档在arcplan中生成。大约生成了30个文件,但不知何故,有些文件损坏了,但仍然显示我的内容。如果我现在合并所有正确的文件,我的文档是好的,但如果我在我的一堆文件中有一个损坏的文件,任何损坏的文件都会生成一个空页。我当然调试了它,但我没有看到任何问题,这解释了空页。

参数是这样的:" C: ' temp ' Report_C_01.docx " C: ' temp ' Report_D_01.docx"C: ' temp ' Report_E_01.docx"

这是我的代码:

public static void Merge(params String[] filepaths)
    {
        String pathName = Path.GetDirectoryName(filepaths[0]);
        subfolder = Path.Combine(pathName, "Output''"); //Wird für den gemergten File benötigt
        if (filepaths != null && filepaths.Length > 1)
        {
            WordprocessingDocument myDoc = WordprocessingDocument.Open(@filepaths[0], true); //Wordfiles werden geöffnet
            MainDocumentPart mainPart = myDoc.MainDocumentPart;
            for (int i = 1; i < filepaths.Length; i++)
            {
                String altChunkId = "AltChunkId" + i;
                AlternativeFormatImportPart chunk = mainPart.AddAlternativeFormatImportPart(
                    AlternativeFormatImportPartType.WordprocessingML, altChunkId);
                FileStream fileStream = File.Open(@filepaths[i], FileMode.Open);
                chunk.FeedData(fileStream);
                DocumentFormat.OpenXml.Wordprocessing.AltChunk altChunk = new DocumentFormat.OpenXml.Wordprocessing.AltChunk();
                altChunk.Id = altChunkId;
                //new page, if you like it...
                mainPart.Document.Body.AppendChild(new Paragraph(new Run(new Break() { Type = BreakValues.Page } )));
                //next document
                mainPart.Document.Body.InsertAfter(altChunk, mainPart.Document.Body.Elements<Paragraph>().Last());
            }
            mainPart.Document.Save();
            myDoc.Close();
            for (int i = 0; i < 1; i++)
            {
                String fileNameWE = Path.GetFileName(filepaths[i]);
                File.Copy(filepaths[i], subfolder + fileNameWE);
            }
            foreach (String fp in filepaths)
            {
                File.Delete(fp);
            }
        }
        else
        {
            Console.WriteLine("Nur 1 Argument");
        }
    }

希望有人能帮助我。

致以最亲切的问候基督教

c# / openxml将word文档合并为一个,失败-关闭-

修复。似乎word无法在一个文档中合并不同的格式。所以如果你有2个文档有页脚,其他3个没有,它就不会工作。很明显,有些客户会遇到这样的问题;至少代码是好的

相关文章: