Pergunta

Eu preciso mesclar um monte de arquivos DOCX programaticamente. Imagine que eles são numerados de 1 a 10. Eu essencialmente preciso de um arquivo final.docx que contém todos os 10 documentos nele. Se eu puder anexar o segundo ao primeiro de alguma forma, posso repeti -lo pelo terceiro, depois quarto, etc.

Observe que não preciso reconstruir um índice ou algo assim. Cada DOCX só tem algum conteúdo estático. No entanto, existem rodapés nesses documentos e precisam ser preservados.

De preferência uma resposta em c# ou msbuild.

Agradecendo você.

Foi útil?

Solução

Eu fiz um aplicativo em C# para mesclar arquivos RTF em um documento, espero que ele funcione para os arquivos DOC e DOCX também.

        Word._Application wordApp;
        Word._Document wordDoc;
        object outputFile = outputFileName;
        object missing = System.Type.Missing;
        object vk_false = false;
        object defaultTemplate = defaultWordDocumentTemplate;
        object pageBreak = Word.WdBreakType.wdPageBreak;
        string[] filesToMerge = new string[pageCounter];
        filestoDelete = new string[pageCounter];

        for (int i = 0; i < pageCounter; i++)
        {
            filesToMerge[i] = @"C:\temp\temp" + i.ToString() + ".rtf";
            filestoDelete[i] = @"C:\temp\temp" + i.ToString() + ".rtf";                
        }
        try
        {
            wordDoc = wordApp.Documents.Add(ref missing, ref missing, ref missing, ref missing);
        }
        catch(Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
        Word.Selection selection= wordApp.Selection;

        foreach (string file in filesToMerge)
        {
            selection.InsertFile(file,
                ref missing,
                ref missing,
                ref missing,
                ref missing);

            selection.InsertBreak(ref pageBreak);                                     
        }
        wordDoc.SaveAs(ref outputFile, ref missing, ref missing, ref missing, ref missing, ref missing,
               ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
               ref missing, ref missing);  

Espero que isto ajude!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top