我正在使用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文件仅包含第一个文件数据。
答案 0 :(得分:1)
因此,您有效地读取每个.docx文件中的所有字节,然后将所有这些字节连接在一起,并期望从输出中获取有效的.docx文件。
麻烦的是,与仅包含文本字符的文件不同,将一堆字节连接在一起可能会起作用,.docx格式是一种XML格式,其中包含很多部分...当你将它们连接在一起时你得到一个不符合.docx架构的文件,并且它不是有效的XML,因为它没有外部XML标签。
您需要以不同方式解决此问题才能解决问题。天真"只是连接字节"方法只是在这里工作。它通常也不会使用涉及文件头的任何其他格式。
有些库可以为您解决这个问题。您可以查看https://github.com/OfficeDev/Open-XML-SDK作为可能的解决方案。