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

  • 本文关键字:docx 文件 损坏 输出 c# .net
  • 更新时间 :
  • 英文 :


我正在使用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 标记。

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

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

最新更新