Есть ли способ динамически генерировать текстовые документы, не имея слова на машине

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


person minty    schedule 29.11.2008    source источник


Ответы (8)


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

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

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

person JB Brown    schedule 29.11.2008
comment
Я обнаружил, что документации по этому проекту не существует. - person benpage; 21.06.2010

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

person Brian    schedule 29.11.2008
comment
Ага, и вы гораздо меньше зависите от разных версий слов. - person Toon Krijthe; 29.11.2008
comment
Я поддержал это ранее, когда подумал, что вы сказали, что вам лучше создать файл rtf, который мир будет знать, как открыть. - person Karl; 29.11.2008

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

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

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

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);
person Christian C. Salvadó    schedule 29.11.2008
comment
Я рекомендую этот подход, он немного сложный, но бесплатный и хорошо работает. Я также использую XML для создания документов Excel. - person Mitchel Sellers; 29.11.2008
comment
Я не могу представить, почему вы порекомендуете это. Если вы не знаете, что на всех клиентах установлен Word2007 или импортер, это бесполезно. Формат - это спецификация на 5000 страниц. - person Stephan Eggermont; 29.11.2008

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

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

person Fionnuala    schedule 29.11.2008

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

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

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

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

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

person Vilx-    schedule 29.11.2008
comment
docx не будет проще. Перевод из двоичного кода в xml - это операция по сохранению сложности. - person Stephan Eggermont; 29.11.2008

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

Быстрый поиск в Google нашел, например, вот этот.

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

Дайте нам знать, как у вас дела ...

person Chris Roberts    schedule 29.11.2008

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

person Jobi Joy    schedule 29.11.2008
comment
Думаю, вы этого не видели? 5К страниц для спецификации с несколькими тысячами ошибок - person Stephan Eggermont; 29.11.2008

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

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

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

person Community    schedule 02.02.2009