C#:附加多个docx文件后,接收到损坏的输出docx文件

C#:附加多个docx文件后,接收到损坏的输出docx文件,c#,.net,C#,.net,我使用的是VS 10 ultimate和.NET 4.0 我正在尝试将多个docx文件附加到一个输出docx文件中。下面的代码可以很好地用于文本文件。但是,在附加多个docx文件的情况下,当我打开输出docx文件时,它会显示为损坏的文件 private static void CombineMultipleFilesIntoSingleFile(string inputDirectoryPath, string inputFileNamePattern, string outputFilePat

我使用的是VS 10 ultimate和.NET 4.0

我正在尝试将多个docx文件附加到一个输出docx文件中。下面的代码可以很好地用于文本文件。但是,在附加多个docx文件的情况下,当我打开输出docx文件时,它会显示为损坏的文件

private static void CombineMultipleFilesIntoSingleFile(string inputDirectoryPath, string inputFileNamePattern, string outputFilePath)
    {
        string[] inputFilePaths = Directory.GetFiles(inputDirectoryPath, inputFileNamePattern);
        Console.WriteLine("Number of files: {0}.", inputFilePaths.Length);
        using (var outputStream = File.Create(outputFilePath))
        {
            foreach (var inputFilePath in inputFilePaths)
            {
                using (var inputStream = File.OpenRead(inputFilePath))
                {
                    inputStream.CopyTo(outputStream);
                }
                Console.WriteLine("The file {0} has been processed.", inputFilePath);
            }
        }
    }

更新1:当我使用.doc文件尝试此代码时,输出.doc文件只包含第一个文件数据。

因此,您实际上是在读取每个.docx文件中的所有字节,然后将所有这些字节连接在一起,并期望从输出中获得一个有效的.docx文件

问题在于,与只包含文本字符的文件不同,.docx格式是一种XML格式,其中包含大量的节,而将一堆字节串联在一起可能就行了。。。当您将它们连接在一起时,会得到一个不符合.docx模式的文件,它不是有效的XML,因为它没有外部XML标记

您需要以不同的方式解决此问题。天真的“仅仅连接字节”方法在这里根本不起作用。它通常也不适用于涉及文件头的任何其他格式


有一些库可能为您解决这个问题。您可以签出作为一个可能的解决方案

谢谢你的回复。对于docx文件格式,我将研究openxmlsdk。但是,即使我使用.doc文件,结果输出.doc文件也只包含第一个文件的内容。你能看看这个并分享你的想法吗?@NewDeveloper-同样的问题。软件需要以某种格式输入-.docx、.doc、.xls、.xlsx、.png、.mp3。。。无论什么我想所有这些文件的字节都在那里,但是,就像.docx一样,Word正在寻找特定格式的数据。。。所以它读取组合文件中的字节。。。在开始处查找一组字节,这些字节来自原始的第一个.doc文件,并显示它们。其他字节是垃圾字。Word希望.doc或.docx文件中的数据符合某种格式。