Как читать файл шаблона .Doc и редактировать шаблон со значениями?

У меня есть шаблон документа, и я хочу использовать этот шаблон для объединения информации о клиенте с этой (заменив ‹>, ‹> ‹> нашей информацией из базы данных.

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

Может ли кто-нибудь помочь мне визуализировать это; как это сделать и с помощью каких инструментов?

Спасибо, Джигар.


person Jigar Pandya    schedule 16.01.2012    source источник
comment
если у вас установлен MS Word на всех машинах, где вы хотите запустить программу, вы можете использовать автоматизацию Word, которую может использовать C#   -  person Davide Piras    schedule 16.01.2012
comment
Автоматизация Office/Word на стороне сервера является тупиковой в соответствии с KB257757. Не пытайтесь утруждать себя.   -  person Lex Li    schedule 16.01.2012
comment
MS может официально заявить, что Office Automation не рекомендуется и не поддерживается на стороне сервера, но она работает до тех пор, пока вы внимательно относитесь к неожиданным ответам и зависаниям. Вам просто нужно войти в систему как пользователь службы и убедиться, что Office настроен так, что при его открытии не отображаются диалоговые подсказки (поскольку автоматизация не может их обработать). В настоящее время я использую и поддерживаю приложение, использующее автоматизацию офиса на стороне сервера — да, его установка была кропотливой, но однажды я настроил его стабильно.   -  person Grhm    schedule 16.01.2012
comment
Я предполагаю, что вы не используете слово 2007+ из-за расширения .doc?   -  person amurra    schedule 16.01.2012
comment
В дополнение к размещению ‹› в тексте документа есть как минимум два других подхода: традиционное слияние почты, в котором используются коды полей, и привязка данных управления содержимым. Оба варианта лучше, так как они решают проблему разделения «клиентов» на несколько циклов (и несоответствия). Вам все равно, что вы используете? (Это может зависеть от того, кто является автором шаблонов).   -  person JasonPlutext    schedule 17.01.2012


Ответы (6)


Я нашел свой ответ в инструменте http://docx.codeplex.com/. Это действительно супер крутой инструмент для внесения изменений в ваш шаблон документа.

Учтите это - с минимальными усилиями, чтобы сделать его готовым для вас.

person Jigar Pandya    schedule 17.01.2012

Вам придется использовать технологию OpenXML для управления текстовым документом и вставки динамического содержимого в текстовый документ. Я предполагаю, что для этой цели вы используете документы docx word. Файл docx на самом деле представляет собой заархивированный файл, который содержит множество файлов xml, которыми, в свою очередь, можно манипулировать с помощью API OpenXML с использованием С#. В вашем случае содержимое слова будет в xml с именем «document.xml». Вам нужно будет прочитать этот XML и заменить заполнитель ‹> вашими данными из базы данных. Я написал 2 статьи (с исходным кодом) по этим концепциям. Вы можете использовать следующие ссылки, которые могут дать хедз-ап.

http://www.codeproject.com/KB/office/Word_2007_Footnote.aspx http://www.codeproject.com/KB/office/Word_2007_Images.aspx

Хотя это может не дать вам точного решения вашей конкретной проблемы, вы можете использовать это, чтобы начать с чего-то (например, как читать document.xml с помощью OpenXML API и C#), а затем вы можете работать самостоятельно, чтобы исправить вашу проблему.

РЕДАКТИРОВАТЬ: Не заметил, что вы упомянули файл .doc. Я увидел тег OpenXML, поэтому ответил. Я предполагаю, что это решение применимо только в том случае, если документ имеет формат .docx.

person Abey    schedule 16.01.2012
comment
Эй, Абей. Это сработает. Используя Open XML, как мы можем изменить данные? Пожалуйста, дай мне знать - person Jigar Pandya; 16.01.2012
comment
Как я уже сказал, это сработает, если ваш шаблон документа представляет собой файл docx. В файле docx должны быть заполнители ‹XXXXData1›, ‹XXXXData2›. Во время выполнения вы можете изменить значение заполнителя на что-то из источника данных, используя API-интерфейсы OpenXML. Пожалуйста, просмотрите исходный код, доступный в первой ссылке. Это очень прямолинейно. Я могу помочь вам, если у вас есть сомнения. Спасибо! - person Abey; 17.01.2012
comment
Ну, у меня есть несколько заполнителей в моем заголовке, несколько в нижнем колонтитуле и остальное в основной части. Не могли бы вы указать, где я могу получить код или рабочую модель для этого? У меня есть шаблоны в этих разделах. Пожалуйста, дайте мне знать, как я могу это сделать? - person Jigar Pandya; 17.01.2012

Вы можете попробовать http://worddocgenerator.codeplex.com/. WordDocumentGenerator — это утилита/образцы для создания документов Word из шаблонов с использованием Visual Studio 2010 и Open XML 2.0 SDK.

person Atul Verma    schedule 24.01.2012

Вы можете поговорить с продавцом Aspose, чтобы узнать, помогают ли компоненты,

http://www.aspose.com/categories/.net-components/aspose.words-for-.net/default.aspx

Кроме того, в Microsoft SharePoint Server 2010 есть службы автоматизации Word,

http://msdn.microsoft.com/en-us/library/ff742315.aspx

Не пытайтесь использовать автоматизацию Office на стороне службы, так как это тупик,

http://support.microsoft.com/kb/257757

person Lex Li    schedule 16.01.2012

Я полагаю, что вы ищете функцию «слияния почты» для документов Word. См. разделы справки в разделе «Слияние почты и отчеты" документации Aspose.Words для .NET.

Раскрытие информации: я работаю разработчиком-евангелистом в Aspose.

person Shahzad Latif    schedule 16.01.2012

Docmosis – это многоплатформенный инструмент, который может использовать файлы .doc в качестве шаблонов и заполнять их с помощью процесса слияния. По умолчанию он использует поля документа и в обычном тексте нотацию ‹‹field››.

person Paul Jowett    schedule 06.02.2012