Есть ли способ генерировать текстовые документы динамически, не имея слова на компьютере? - PullRequest
18 голосов
/ 29 ноября 2008

Я планирую динамически генерировать документ Word на веб-сервере. Есть ли хороший способ сделать это в C #? Я знаю, что мог бы написать для этого скрипт Word, но я бы предпочел другой вариант.

Ответы [ 8 ]

19 голосов
/ 29 ноября 2008

В прошлом я работал в компании, которая действительно хотела генерировать текстовые документы, в конце концов, они были полностью удовлетворены документами RTF с расширением ".doc". В Word нет проблем с их распознаванием и открытием.

Документы RTF были сгенерированы с помощью iText.net (бесплатная библиотека .net), API довольно прост в использовании, работает очень хорошо, вам не нужны слова на компьютере, также вы может распространяться на создание PDF, HTML и текстовых документов в будущем без особых усилий. Спустя четыре года созданное мной решение все еще остается в силе, так что это небольшое свидетельство в пользу iText.net.

Похоже, официальная iText страница предполагает, что iText Sharp - лучший выбор .Net прямо сейчас, так что это еще один вариант

9 голосов
/ 29 ноября 2008

Вам лучше сгенерировать файл rtf, какое слово будет знать, как его открыть.

8 голосов
/ 29 ноября 2008

Если вы хотите сгенерировать документы Office 2007, проверьте форматы файлов Open XML, это простые XML-файлы в формате ZIP, проверьте следующие ссылки:

Редактировать: Проверьте этот проект, может служить хорошей отправной точкой:

Кажется очень простым и настраиваемым, посмотрите этот фрагмент кода:

Paragraph p = new Paragraph();
p.Runs.Add(new Run("Text can have multiple format styles, they can be "));
p.Runs.Add(new Run("bold and italic", 
        TextFormats.Format.Bold | TextFormats.Format.Italic));
doc.Paragraphs.Add(p);
6 голосов
/ 29 ноября 2008

Создание старых файлов .DOC (до Word 2007) практически невозможно без самого Word. Формат слишком сложный. Microsoft выпустила описание формата, но этого достаточно, чтобы довести взрослого программиста до слез. Для этого тоже есть причина (историческая), но это не делает вещи лучше.

Новый .DOCX будет проще, хотя все еще немного хлопотно. Однако, в зависимости от того, на какие версии Word вы ориентируетесь, есть и другие варианты.

Например, есть классический .RTF. Формат все еще довольно сложен, но хорошо документирован и имеет сильную поддержку для многих приложений и платформ. И вы можете использовать некоторую замену строк в файлах шаблонов, чтобы упростить задачу (это не двоично).

Тогда есть "старые" файлы Word XML. Я думаю, что они работали, начиная с Word XP. Вроде предшественники .DOCX. Я использовал их, неплохо. И с документацией все в порядке.

Наконец, самый простой способ, который я выбрал бы, - создать простой HTML. Word может нормально загружать HTML-файлы, начиная с версии 2000. Проще всего изменить расширение HTML-файла на .DOC, и оно у вас есть. Вы также можете добавить несколько словесных тегов и комментариев, чтобы они выглядели еще лучше в Word. Используйте опцию Word «Сохранить как ... HTML», чтобы увидеть, какие они есть.

6 голосов
/ 29 ноября 2008

Word с радостью откроет HTML с расширением .doc. Если вы включите внутреннюю таблицу стилей, вы можете полностью отформатировать ее. На эту тему был предыдущий пост:

Экспорт в документ Word в C #

1 голос
/ 29 ноября 2008

В Office 2007 Microsoft представила новый формат файлов, который называется Microsoft Open Office XML Format (.docx). Этот формат не совместим с более старыми версиями Microsoft Word. Поскольку это XML, вы можете создавать или читать без установленного Word.

1 голос
/ 29 ноября 2008

Существуют сторонние библиотеки, которые будут выполнять эту работу.

При быстром гугле придумали этот , например.

Я не пробовал, поэтому не могу дать вам конкретного совета, боюсь!

Дайте нам знать, как вы ладите ...

0 голосов
/ 02 февраля 2009

Вот компонент, который генерирует документ на основе пользовательского шаблона. Документы создаются из списка sharepoint ... поэтому данные извлекаются из элемента списка в документ на лету http://store.sharemuch.com/products/generate-word-documents-from-sharepoint-list

Надеюсь, это поможет,

Ярослав Пентсарский Блог: www.sharemuch.com

...