Pregunta

Necesito fusionar un montón de archivos docx mediante programación. Imagine que están numerados del 1 al 10. Esencialmente necesito un archivo final.docx que contenga los 10 documentos. Si puedo agregar el segundo al primero de alguna manera, entonces puedo repetirlo para el tercero, luego el cuarto, etc.

Tenga en cuenta que NO necesito reconstruir una tabla de contenido ni nada de eso. Cada docx solo tiene contenido estático. Sin embargo, hay pies de página en estos documentos, y deben conservarse.

Preferiblemente una respuesta en C # o MSBuild.

Gracias.

¿Fue útil?

Solución

Hice una aplicación en C # para fusionar archivos RTF en un documento, espero que también funcione para archivos DOC y DOCX.

        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 esto ayude!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top