Как можно создать документ Word В C#? [закрытый]



У меня есть проект, в котором я хотел бы создать экспорт отчета в формате MS Word. Отчет будет содержать изображения / графики, таблицы и текст. Каков наилучший способ сделать это? Сторонние инструменты? Каковы ваши впечатления?

1017   17  

17 ответов:

ответ будет немного зависеть от того, работает ли приложение на сервере или на клиентской машине. Если вы работаете на сервере, то вы собираетесь использовать один из форматов создания office на основе XML, поскольку есть известные проблемы, когда использование автоматизации делопроизводства на сервере.

, Если вы работаете на клиентской машине, то у вас есть выбор либо использование автоматизации управления или используя офис открытый Формат XML (см. ссылки ниже), который поддерживается Microsoft Office 2000 и выше либо в собственном коде, либо с помощью пакетов обновления. Один из недостатков этого заключается в том, что вы, возможно, не сможете встроить некоторые виды графиков или изображений, которые вы хотите показать.

лучший способ идти о вещах все будет зависеть от того, сколько времени вы должны инвестировать в развитие. Если вы идти по пути автоматизации офиса есть довольно много хороших уроков, которые можно найти через Google и довольно просто учиться. Однако формат Open Office XML является довольно новым, поэтому вы можете найти кривую обучения немного выше.

Office Open XML Iinformation

DocX бесплатная библиотека для создания документов DocX, активно разработанных и очень простых и интуитивно понятных в использовании. Поскольку CodePlex умирает, проект переместился в github.

Я провел последнюю неделю или около того, чтобы ускорить Office Open XML. У нас есть приложение базы данных, которое хранит данные опроса, которые мы хотим сообщить в Microsoft Word. Вы можете фактически создать Word 2007 (docx) файлы с нуля в C#. Пакет SDK Open XML версии 2 включает в себя классное приложение под названием document Reflector, которое фактически предоставляет код C# для полного воссоздания документа Word. Вы можете использовать части или весь код, а также заменить биты, которые вы хотите изменение на лету. Файл справки, включенный в SDK, также имеет несколько хороших примеров кода.

нет необходимости в офисном взаимодействии или любом другом офисном программном обеспечении на сервере - новые форматы составляют 100% XML.

вы рассматривали использование .РТФ в качестве альтернативы?

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

конечные пользователи, вероятно, не заметите.

Я нашел Aspose Words чтобы быть лучшим, так как не все могут открыть Office Open XML/*.файлы формата docx и Word interop и Word automation могут быть глючными. Aspose Words поддерживает большинство типов файлов документов от Word 97 и выше.

это платный компонент, но имеет большую поддержку. Другой альтернативой, как уже предлагалось, является RTF.

для создания документов Word с помощью Office Automation в .NET, в частности в C# или VB.NET:

  1. добавить Microsoft.Офис.Взаимодействие.Слово ссылка на сборку в проект. Путь-это \Visual Studio Tools for Office\PIA\Office11\Microsoft.Офис.Взаимодействие.Слово.dll.

  2. следуйте примеру кода Microsoft вы можете найти здесь: http://support.microsoft.com/kb/316384/en-us.

Шмидти, если вы хотите создавать документы Word на веб-сервере вам понадобится лицензия для каждого клиент (не только веб-сервер). См. Этот раздел в первом ссылке Роб добавлено:

"помимо технических проблем, вы также должны рассмотреть вопросы лицензирования. Текущие правила лицензирования запрещают использование приложений Office на сервере для обслуживания клиентских запросов, если только эти клиенты сами не имеют лицензионных копий Office. С помощью серверная автоматизация для предоставления функций Office нелицензионным рабочим станциям не подпадает под действие лицензионного соглашения с конечным пользователем (EULA)."

Если вы соответствуете лицензионным требованиям, я думаю, вам нужно использовать com-взаимодействия - в частности,основные сборки взаимодействия Office XP.

Проверьте VSTO (Visual Studio Tools for Office). Довольно просто создать шаблон Word, ввести в него остров данных xml, а затем отправить его клиенту. Когда пользователь открывает документ в Word, Word считывает xml и преобразует его в WordML и отображает его. Вы захотите посмотреть класс ServerDocument библиотеки VSTO. Никакого дополнительного лицензирования не требуется из моего опыта.

Я имел хороший успех, используя Syncfusion Backoffice DocIO, который поддерживает форматы doc и docx.

в предыдущих версиях он не поддерживал все в word, но в соответствии с вашим списком мы протестировали его с таблицами и текстом в качестве подхода слияния почты, и он работал нормально.

Не уверен в импорте изображений, хотя. На их рекламной странице http://www.syncfusion.com/products/DocIO/Backoffice/features/default.aspx он говорит

Blockquote Essential DocIO поддерживает вставку как скалярных, так и векторных изображений в документ практически во всех форматах. Растровое изображение, gif, png и tiff-это некоторые из распространенных поддерживаемых типов изображений.

Так что его стоит рассмотреть.

Как уже упоминалось, вы можете создать документ RTF, есть несколько хороших библиотек RTF для .net, таких как http://www.codeproject.com/KB/string/nrtftree.aspx

Я столкнулась с этой проблемой и создал небольшую библиотеку для этого. Он был использован в нескольких проектах, а затем я решил опубликовать его. Это бесплатно и очень просто, но я уверен, что это поможет вам с этой задачей. Вызовите библиотеку Office Open XML,http://invoke.co.nz/products/docx.aspx.

Я написал серия сообщений в блоге о создании документа Open XML WordprocessingML. Мой подход заключается в том, что вы создаете документ шаблона, содержащий элементы управления содержимым, и в каждом элементе управления содержимым вы пишете выражение XPath, которое определяет, как извлечь содержимое из XML-документа, содержащего данные, которые управляют процессом создания документа. Код является бесплатным, и лицензируется под Microsoft взаимная лицензия (Ms-RL). В том же серия сообщений в блоге, я также изучаю подход, при котором вы пишете код C# в элементах управления контентом. Затем процесс создания документа обрабатывает документ шаблона и создает программу C#, которая создает нужные документы. Одним из преимуществ этого подхода является то, что вы можете использовать любой источник данных как источник данных для процесса создания документа. Этот код также лицензируется в соответствии с взаимной лицензией Microsoft.

в настоящее время я делаю именно это.

Если документ не очень большой, не содержит изображений и т. д., то я сохраняю его как RTF с #MergeFields# в нем и просто заменяю их содержимым, отправляя результат пользователю как RTF.

для больших документов, включая изображения и динамически вставленные изображения, я сохраняю исходный документ Word как одну веб-страницу *.MHT файл, содержащий #MergeFields# снова. Тогда я делаю то же самое, что и выше. Используя это, я можно легко отобразить DataTable с некоторыми основными тегами таблицы Html и заменить один из #MergeFields# целой таблицей.

изображения могут быть сохранены на вашем сервере и url-адрес, встроенный в документ тоже.

интересно, что новые форматы файлов Office 2007 На самом деле являются zip-файлами - если вы переименуете расширение.zip вы можете открыть их и увидеть их содержимое. Это означает, что вы должны иметь возможность переключать содержимое, такое как изображения, с помощью простого c# zip библиотека.

@Dale Ragan: это будет работать для формата Office 2003 XML, но это не портативный (как, скажем, .doc или .docx файлы будут).

чтобы прочитать / записать их, вам нужно будет использовать элемент управления ActiveX библиотеки объектов Word:

http://www.codeproject.com/KB/aspnet/wordapplication.aspx

@Danny Smurf: на самом деле эта статья описывает, что станет офисным форматом Open XML, с которым Роб ответил. Я буду уделять больше внимания ссылкам, которые я публикую сейчас, чтобы убедиться, что они не устарели. Я на самом деле сделал поиск на WordML, что и было названо в то время.

Я считаю, что формат Office Open XML-это лучший способ пойти.

LibreOffice также поддерживает безголовое взаимодействие через API. К сожалению, в настоящее время еще не так много информации об этой функции.. : (

вы также можете использовать генератор документов Word. Его можно использовать для развертывания на стороне клиента или сервера. Из описания проекта:

WordDocumentGenerator-это утилита для создания документов Word из шаблоны с использованием Visual Studio 2010 и Open XML 2.0 SDK. WordDocumentGenerator помогает создавать текстовые документы как не обновляемый а также обновляемый на основе предопределенных шаблонов использование минимальных изменений кода. Элементы управления содержимым используются в качестве подстановки для создания документов. Он поддерживает Word 2007 и Word 2010.

Хватай:http://worddocgenerator.codeplex.com/

скачать SDK:http://www.microsoft.com/en-us/download/details.aspx?id=5124

Другой альтернативой является Windward Docgen (отказ от ответственности-я основатель). С Windward вы создаете шаблон в Word, включая изображения, таблицы, графики, датчики и все остальное, что вы хотите. Вы можете установить теги, в которые вставляются данные из источника данных XML или SQL (включая такие функции, как циклы forEach, импорт и т. д.). А затем сгенерируйте отчет в DOCX, PDF, HTML и т. д.

Comments

    Ничего не найдено.