Каков наилучший способ заполнить шаблон Word 2007 в C #? - PullRequest
6 голосов
/ 14 ноября 2008

Мне нужно заполнить документ Word 2007 из кода, включая повторяющиеся разделы таблицы - в настоящее время я использую преобразование XML в части документа.xml документа, но это чрезвычайно трудоемко для настройки (каждый раз, когда вы редактируете в шаблонном документе необходимо заново создать файл transform.xsl, который может занять до одного дня для сложных документов).

Есть ли лучший способ, желательно такой, который не требует от вас запуска Word 2007 во время процесса?

С уважением Ричард

Ответы [ 5 ]

3 голосов
/ 14 ноября 2008

Я пытался написать какой-то код для этой цели, но сдался. Сейчас я использую сторонний продукт: Aspose Words и вполне доволен этим компонентом.

На компьютере не требуется Microsoft Word.

"Aspose.Words позволяет приложениям .NET и Java читать, изменять и писать документы Word® без использования Microsoft Word®."

"Aspose.Words поддерживает широкий спектр функций, включая создание документов, манипулирование содержимым и форматированием, мощные возможности слияния, всестороннюю поддержку форматов DOC, OOXML, RTF, WordprocessingML, HTML, OpenDocument и PDF. Word - действительно самый доступный, быстрый и многофункциональный компонент Word на рынке. "

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ : Я не связан с этой компанией.

2 голосов
/ 29 июля 2009

Рассматривали ли вы использование Open XML SDK от Microsoft? Единственная зависимость - это .NET 3.5.

Документация: http://msdn.microsoft.com/en-us/library/bb448854%28office.14%29.aspx

Скачать: http://www.microsoft.com/downloads/details.aspx?familyid=C6E744E5-36E9-45F5-8D8C-331DF206E0D0&displaylang=en

2 голосов
/ 14 ноября 2008

Поскольку DOCX-файл - это просто ZIP-файл, содержащий структуру папок с изображениями и XML-файлами, вы должны иметь возможность манипулировать этими XML-файлами с помощью нашего любимого API-интерфейса XML. Спецификация формата известна как WordprocessingML , часть стандарта Office Open XML .

Я подумал упомянуть об этом, если сторонний инструмент, предложенный splattne, не подходит.

1 голос
/ 23 декабря 2008

Используйте invoke docx lib. он поддерживает данные таблицы (http://invoke.co.nz/products/help/docx_tables.aspx). Больше информации на http://invoke.co.nz/products/docx.aspx

0 голосов
/ 01 мая 2009

Рассматривали ли вы использование VB? Вы можете создать отдельную сборку для заполнения документа.

Я знаю, что вы ищете решение C #, но поддержка литералов XML - это одна из областей, где поддержка литералов XML может помочь вам заполнить документ. Создайте документ в Word на сервер как шаблон, разархивируйте docx, вставьте соответствующий раздел XML, который вы хотите изменить, в свой код VB, и добавьте код, чтобы заполнить части, которые вы хотите изменить. По вашему описанию трудно сказать, соответствует ли это вашим требованиям, но я бы посоветовал изучить это.

...