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

时间:2017-08-23 18:56:34

标签: c# .net

我正在使用VS 10 ultimate和.NET 4.0。

我试图将多个docx文件附加到一个输出docx文件中。下面的代码适用于文本文件。但是,如果附加多个docx文件,当我打开输出docx文件时,它会将其显示为Corrupt文件。

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文件仅包含第一个文件数据。

1 个答案:

答案 0 :(得分:1)

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

麻烦的是,与仅包含文本字符的文件不同,将一堆字节连接在一起可能会起作用,.docx格式是一种XML格式,其中包含很多部分...当你将它们连接在一起时你得到一个不符合.docx架构的文件,并且它不是有效的XML,因为它没有外部XML标签。

您需要以不同方式解决此问题才能解决问题。天真"只是连接字节"方法只是在这里工作。它通常也不会使用涉及文件头的任何其他格式。

有些库可以为您解决这个问题。您可以查看https://github.com/OfficeDev/Open-XML-SDK作为可能的解决方案。