将word文档合并到单个文档中

时间:2010-12-01 15:02:32

标签: ms-word interop ms-office

我使用下面提到的链接中的代码将单词文件合并到一个文件中

http://devpinoy.org/blogs/keithrull/archive/2007/06/09/updated-how-to-merge-multiple-microsoft-word-documents.aspx

然而,看到输出文件我意识到它无法在第一个文档中复制标题图像。我们如何合并保留格式和内容的文档。

2 个答案:

答案 0 :(得分:1)

我建议使用GroupDocs.Merger Cloud将多个Word文档合并到一个Word文档中,这样可以保留源文档的格式和内容。它是不依赖平台的REST API解决方案,无需依赖任何第三方工具或软件。

示例C#代码:

var configuration = new GroupDocs.Merger.Cloud.Sdk.Client.Configuration(MyAppSid, MyAppKey);
var apiInstance_Document = new GroupDocs.Merger.Cloud.Sdk.Api.DocumentApi(configuration);
var apiInstance_File = new GroupDocs.Merger.Cloud.Sdk.Api.FileApi(configuration);

var pathToSourceFiles = @"C:/Temp/input/";
var remoteFolder = "Temp/";
var joinItem_list = new List<JoinItem>();
try
{

    DirectoryInfo dir = new DirectoryInfo(pathToSourceFiles);
    System.IO.FileInfo[] files = dir.GetFiles();
    foreach (System.IO.FileInfo file in files)
    {
        var request_upload = new GroupDocs.Merger.Cloud.Sdk.Model.Requests.UploadFileRequest(remoteFolder + file.Name, File.Open(file.FullName, FileMode.Open));
        var response_upload = apiInstance_File.UploadFile(request_upload);
        var item = new JoinItem
        {
            FileInfo = new GroupDocs.Merger.Cloud.Sdk.Model.FileInfo
            { FilePath = remoteFolder + file.Name }
        };
        joinItem_list.Add(item);
    }

    var options = new JoinOptions
    {
        JoinItems = joinItem_list,
        OutputPath = remoteFolder + "Merged_Document.docx"
    };

    var request = new JoinRequest(options);
    var response = apiInstance_Document.Join(request);

    Console.WriteLine("Output file path: " + response.Path);

}
catch (Exception e)
{
    Console.WriteLine("Exception while Merging Documents: " + e.Message);
}

答案 1 :(得分:0)

该代码在每个文件后插入分页符。

由于部分控制标题,如果第二个或后续文档有标题,您可能希望保留原始部分属性,并在第一个文档之后插入它们。

如果您将原始文档视为docx,您可能会看到您的部分是文档级别部分属性元素。

解决问题的最简单方法可能是在最后一个段落(包含标题信息)中创建第二个section属性元素。然后,当文档合并时(即在其后添加其他段落),这应该保持在那里。

这就是理论。另见http://www.pcreview.co.uk/forums/thread-898133.php 但我没有尝试过;它假设InsertFile的行为与我预期的一样。