Объединение документов Word (взаимодействие с Office и .NET), сохранение форматирования

У меня возникли трудности с объединением нескольких текстовых документов вместе с использованием сборок взаимодействия Microsoft Office (Office 2007) и ASP.NET 3.5. Я могу объединить документы, но часть моего форматирования отсутствует (а именно шрифты и изображения).

Мой текущий код слияния показан ниже.

private void CombineDocuments() {
        object wdPageBreak = 7;
        object wdStory = 6;
        object oMissing = System.Reflection.Missing.Value;
        object oFalse = false;
        object oTrue = true;
        string fileDirectory = @"C:\documents\";

        Microsoft.Office.Interop.Word.Application WordApp = new Microsoft.Office.Interop.Word.Application();
        Microsoft.Office.Interop.Word.Document wDoc = WordApp.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);

        string[] wordFiles = Directory.GetFiles(fileDirectory, "*.doc");
        for (int i = 0; i < wordFiles.Length; i++) {
            string file = wordFiles[i];
            wDoc.Application.Selection.Range.InsertFile(file, ref oMissing, ref oMissing, ref oMissing, ref oFalse);
            wDoc.Application.Selection.Range.InsertBreak(ref wdPageBreak);
            wDoc.Application.Selection.EndKey(ref wdStory, ref oMissing);
        }
        string combineDocName = Path.Combine(fileDirectory, "Merged Document.doc");
        if (File.Exists(combineDocName))
            File.Delete(combineDocName);
        object combineDocNameObj = combineDocName;
        wDoc.SaveAs(ref combineDocNameObj, ref m_WordDocumentType, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
    } 

Меня не волнует, как это достигается. При необходимости он мог выводиться в формате PDF. Я просто хочу, чтобы форматирование сохранилось.


person Matt McCormick    schedule 25.03.2010    source источник
comment
Никогда не используйте Office Interop из приложения ASP.NET. См. Рекомендации по серверной автоматизации Office.   -  person John Saunders    schedule 06.10.2011
comment
Проголосовали против и проголосовали за закрытие, потому что, как есть, кто-то решит, что этот вопрос означает, что можно использовать Office Interop из ASP.NET.   -  person John Saunders    schedule 22.12.2012


Ответы (1)


При добавлении документов вы пропускаете имя шаблона, поэтому в нем отсутствует формат.

Это должно выглядеть так

string defaultTemplate="your template name with full path"; 

ИЛИ

Название шаблона по умолчанию

string defaultTemplate="Normal.dot";

wordApplication.Documents.Add(ref defaultTemplate,............

Используйте эту ссылку как Ref: http://devpinoy.org/blogs/keithrull/archive/2007/05/23/how-to-merge-multiple-microsoft-word-documents-in-c.aspx

person Sarathy    schedule 26.05.2010