Доступ к шаблонам документов Word 2007 и их заполнение. Быстрые части с использованием C # и Microsoft.Office.Interop.Word? - PullRequest
0 голосов
/ 11 января 2011

Я создал файл шаблона документа (.dotx) в Word 2007, и в этом я создал Quick Part. Я пытался получить доступ к этой быстрой части программно, используя C # и пространство имен Microsoft.Office.Interop.Word. Получив доступ к быстрой части, я хочу заполнить ее поля свойствами POCO, а затем скопировать это для всех POCO в списке.

Пока я не добился успеха. Кому-нибудь повезло с этим?

Примечание. Я не хочу использовать Open XML SDK, если это вообще возможно.

Ответы [ 2 ]

1 голос
/ 11 января 2011

Я обнаружил, что могу получить доступ к быстрой детали из файла шаблона документа, используя следующий код:

    private BuildingBlock GetQuickPartFromTemplate(Microsoft.Office.Interop.Word.Application wordApplication, string wordTemplateDocumentPath, object quickPartName)
    {
        return (from Template template in wordApplication.Templates
                where template.FullName.Contains(Path.GetFileNameWithoutExtension(wordTemplateDocumentpath))
                let index = quickPartName
                select template.BuildingBlockEntries.Item(ref quickPartName)).FirstOrDefault();
    }

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

1 голос
/ 11 января 2011

Альтернативным подходом было бы заполнение пользовательской части XML содержимым вашего POCO.

Данные будут отображаться на поверхности документа через элементы управления содержимым с привязкой к данным. Элемент управления содержимым с привязкой к данным идентифицирует данные, с которыми он связан через XPath.

См. В общем http://msdn.microsoft.com/en-us/library/ff433638%28v=office.14%29.aspx

...