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

Как отметил @FelixKling, наиболее вероятным сценарием является то, что узлы, которые вы ищете, еще не существуют.

Однако современные методы разработки часто могут манипулировать элементами документа за пределами дерева документов либо с DocumentFragments, либо просто отсоединением / повторным подключением текущих элементов напрямую. Такие методы могут использоваться как часть шаблонов JavaScript или для предотвращения чрезмерных операций перерисовки / переплавки, в то время как элементы, о которых идет речь, сильно изменяются.

Аналогично, новая функциональность «Теневой DOM» развертывается в современных браузерах позволяет элементам быть частью документа, но не обрабатываться запросом document.getElementById и всеми его методами sibling (querySelector и т. д.). Это делается для инкапсуляции функциональных возможностей и, в частности, скрыть его.

Опять же, скорее всего, элемент, который вы ищете, просто (пока) в документе, и вы должны сделать, как предлагает Феликс , Тем не менее, вы также должны знать, что это все чаще является не единственной причиной того, что элемент может быть необоснованным (временно или постоянно).

73
задан Peter Mortensen 3 February 2010 в 20:32
поделиться

13 ответов

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

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

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

Office Открывает XML Iinformation

49
ответ дан rjzii 24 November 2019 в 12:20
поделиться

Смурф @Danny: На самом деле эта статья описывает то, что станет Office, Открывают формат XML, которым ответил Rob. Я уделю больше внимания ссылкам, на которых я отправляю на данный момент удостовериться там не устаревший. Я на самом деле сделал поиск на WordML, который является тем, чем это назвали в то время.

я полагаю, что Office Открывает, формат XML является лучшим способом пойти.

1
ответ дан Dale Ragan 24 November 2019 в 12:20
поделиться

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

К чтению-записи те, необходимо будет использовать Word Object Library ActiveX control:

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

1
ответ дан TheSmurf 24 November 2019 в 12:20
поделиться

Я в настоящее время делаю эту точную вещь.

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

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

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

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

2
ответ дан littlecharva 24 November 2019 в 12:20
поделиться

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

3
ответ дан Peter Mortensen 24 November 2019 в 12:20
поделиться

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

3
ответ дан DancesWithBamboo 24 November 2019 в 12:20
поделиться

Schmidty, если Вы хотите генерировать документы Word о веб-сервере, Вам будет нужна лицензия на каждый клиент (не только веб-сервер). Посмотрите этот раздел в первом ссылка , Rob отправил:

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

, Если Вы отвечаете требованиям лицензирования, я думаю, что необходимо будет использовать COM Interop - чтобы быть конкретными, Office XP Primary Interop Assemblies.

4
ответ дан Luke Girvin 24 November 2019 в 12:20
поделиться

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

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

10
ответ дан Peter Mortensen 24 November 2019 в 12:20
поделиться

Вы рассмотрели использование.RTF как альтернативы?

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

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

10
ответ дан DavidWhitney 24 November 2019 в 12:20
поделиться

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

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

Хотя не уверен насчет импорта изображений. На их рекламной странице http://www.syncfusion.com/products/DocIO/Backoffice/features/default. Essential DocIO поддерживает вставку в документ как скалярных, так и векторных изображений практически во всех форматах. Растровые изображения, GIF, PNG и TIFF являются некоторыми из поддерживаемых типов изображений.

Так что стоит подумать.

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

3
ответ дан Jafin 24 November 2019 в 12:20
поделиться

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

Нет необходимости в Office Interop или любом другом программном обеспечении Office на сервере - новые форматы - это 100% XML.

14
ответ дан 24 November 2019 в 12:20
поделиться

To generate Word documents with Office Automation within .NET, specifically in C# or VB.NET:

  1. Add the Microsoft.Office.Interop.Word assembly reference to your project. The path is \Visual Studio Tools for Office\PIA\Office11\Microsoft.Office.Interop.Word.dll.

  2. Follow the Microsoft code example you can find here: http://support.microsoft.com/kb/316384/en-us.

7
ответ дан 24 November 2019 в 12:20
поделиться

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

17
ответ дан 24 November 2019 в 12:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: