Я делал это разными способами в прошлом. Это зависит от того, инициирует ли пользователь действие ВНЕ Microsoft Word или ВНУТРИ Microsoft Word.
Из ВНУТРИ Microsoft Word, вы можете использовать один из следующих методов:
- Откройте шаблон с заполнителями и используйте VBA или VSTO для их итерации по источнику данных, используя копирование и вставку. Обратите внимание, что столы также являются преступлением. Этот подход напоминает подход 1 ниже с «ВНЕ». Недостаток в том, что он относительно медленный (копирование и вставка), и что автозамена Microsoft Word любит вставлять ее по мере необходимости.
- Откройте шаблон с заполнителями и используйте VBA или VSTO для анализа представления XML, а затем замените их. Это быстрее, но сложнее писать. Тем более, что представление XML может содержать фрагменты XML внутри заполнителей (например, «
&lt;&lt;PUT_<xxx/>IT_HERE&gt;&gt;
» и более сложные случаи). Кроме того, вам необходимо убедиться, что вы сохраняете действительный документ XML и хорошо сбалансированы.
Из ВНЕ Microsoft Word (например, веб-интерфейс) вы можете использовать один из следующих методов:
- Сохраните шаблон где-нибудь, используя RTF (который гораздо проще обрабатывать, чем собственная структура Word). Поместите «
<<PLACEHOLDER-FOR-NAME>>
» или аналогичные легко узнаваемые тексты, где вы хотите заменить его. Когда пользователь запрашивает документ Word, извлекает RTF, извлекает данные, заменяет заполнители, сервер RTF для пользователя. RTF имеет некоторые ограничения, но некоторые преимущества. Преимущества: простота создания новых шаблонов, а также работа с Microsoft Wordpad и другими пакетами Office. Недостатки в том, что таблицы - настоящий беспорядок в обработке, и что не все конструкции Microsoft Word возможны. Повторять строки в таблице еще менее рекомендуется. Большой объем может быть проблемой.
- Используйте пакет отчетов, который также может выводить документы docx, doc или RTF. Написать отчет. В целом идеально подходит для большого объема. Меньше подходит, если вы хотите, чтобы конечный пользователь набрал большую часть дополнительного текста, поскольку пакеты отчетов обычно работают на основе страниц, а не на текущем тексте, где иногда вставляется явный или неявный разрыв страницы. Но если вам нужно, чтобы конечный пользователь дополнительно ввел одно или два предложения, этого достаточно.
- Fat-клиент. Положите данные SQL куда-нибудь. Открой слово. Прочитайте данные и ознакомьтесь с дальнейшими приемами изнутри Microsoft Word.
Если вам нужно заполнить документ Word из SQL Server (или любой другой базы данных или платформы данных), я могу предложить бесплатную версию Invantive Composition для заполнения документов Word из базы данных (обратите внимание, что Я был связан с этим продуктом). Он открывает шаблоны и объединяет их из Word, но больше ориентирован на не разработчиков; просто укажите шаблон и блоки данных (возможно, вложенные) и опубликуйте. Разработчики могут добавить только некоторые C # плагины. Я думаю, что это хороший продукт, когда у вас МНОГО шаблонов (более 50), потому что он легче масштабируется.