Я планирую динамически создавать документ Word на веб-сервере. Есть ли хороший способ сделать это в С #? Я знаю, что могу написать для этого сценарий Word, но я бы предпочел другой вариант.
Есть ли способ динамически генерировать текстовые документы, не имея слова на машине
Ответы (8)
В прошлом я работал в компании, которой действительно нужны были сгенерированные текстовые документы, но в конце концов они были полностью удовлетворены документами в формате RTF с расширением «.doc». Word без проблем распознает и открывает их.
Документы в формате RTF были созданы с помощью iText.net (бесплатная библиотека .net), API довольно легко use, работает очень хорошо, вам не нужно слово на машине, а также вы можете расширить создание документов PDF, HTML и Text в будущем с очень небольшими усилиями. Спустя четыре года созданное мной решение все еще действует, так что это небольшое свидетельство в пользу iText.net.
Похоже, что официальная страница iText предполагает, что iText Sharp - лучший выбор для .Net прямо сейчас, так что это еще один вариант
Лучше бы сгенерировать rtf-файл, который слово умеет открывать.
Если вы хотите сгенерировать документы Office 2007, проверьте форматы файлов Open XML, это простые заархивированные файлы XML, проверьте эти ссылки:
- Форматы файлов Open XML: что это такое и как получить началось?
- Знакомство с форматами файлов Open XML Office (2007)
Изменить: отметьте этот проект, он может послужить вам хорошей отправной точкой:
Кажется очень простым и настраиваемым, посмотрите этот фрагмент кода:
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);
Word с радостью откроет HTML с расширением .doc. Если вы включите внутреннюю таблицу стилей, вы можете полностью отформатировать ее. На эту тему был предыдущий пост:
Экспорт в документ Word на C #
Создание старых файлов .DOC (до Word 2007) практически невозможно без самого Word. Формат слишком сложный. Microsoft опубликовала описание формата, но этого достаточно, чтобы довести до слез подросшего программиста. Для этого тоже есть причина (историческая), но от этого дела обстоят не лучше.
Новый .DOCX был бы проще, хотя все еще доставлял немало хлопот. Однако в зависимости от того, на какие версии Word вы нацеливаетесь, есть и другие варианты.
Во-первых, это классический .RTF. Формат все еще довольно сложен, но хорошо документирован и имеет сильную поддержку во многих приложениях и платформах. И вы можете использовать некоторую замену строк в файлах шаблонов, чтобы упростить задачу (это не двоичный код).
Затем есть «старые» файлы Word XML. Думаю, они работали начиная с Word XP. Своего рода предшественники .DOCX. Я их использовал, неплохо. И с документацией все в порядке.
Наконец, я бы выбрал простой способ - создать простой HTML. Word может легко загружать файлы HTML, начиная с версии 2000. В самом простом случае просто измените расширение файла HTML на .DOC, и оно у вас есть. Вы также можете добавить несколько тегов и комментариев для конкретных слов, чтобы они выглядели еще лучше в Word. Используйте опцию Word «Сохранить как ... HTML», чтобы увидеть, что они собой представляют.
Существуют сторонние библиотеки, которые справятся с этой задачей.
Быстрый поиск в Google нашел, например, вот этот.
Я не пробовал ни одного, поэтому, боюсь, не могу дать вам конкретного совета!
Дайте нам знать, как у вас дела ...
В Office 2007 Microsoft представила новый формат файлов, который называется Microsoft Open Office XML Format. (.docx). Этот формат несовместим со старыми версиями Microsoft Word. Поскольку это XML, вы можете создавать или читать без установленного Word.
Вот компонент, который генерирует документ на основе настраиваемого шаблона. Документы создаются из списка sharepoint ... поэтому данные извлекаются из элемента списка в документ на лету: http://store.sharemuch.com/products/generate-word-documents-from-sharepoint-list
Надеюсь, это поможет,
Ярослав Пенцарский Блог: www.sharemuch.com