2011-01-10 3 views
2

У меня есть веб-приложение .net, написанное на C#, которое используется только в интрасети.Создание документа Word из .net-приложения

У меня есть страница, на которой мне нужно создать документ Word, изменить динамический текст, сохранить документ Word и отправить его в виде вложения электронной почты.

Я попытался сделать это с помощью Word Automation и, хотя он работал на моей машине разработки, он не работает на сервере, когда другие пользователи пытаются его использовать.

Итак ... как создать документ Word на лету, сохранить его и использовать в качестве приложения электронной почты? Я искал, и люди говорят «использовать открытый xml» ... но (помимо того, что я не знаю, как это сделать), это позволит мне создать и сохранить документ Word, который сможет быть открыт людьми, использующими старые копии Word (скажем еще в Word 97).

И я продолжаю читать слова «Сервер Sharepoint», но, опять же, понятия не имею, что/как это может вписываться в веб-приложение .net.

Может ли кто-нибудь указать мне в правильном направлении, пожалуйста?

+0

Знаете ли вы, почему это не работает на вашем сервере? –

+0

Какой формат файла вы хотите создать? .doc, .docx, .rtf, ... –

ответ

3

OpenXML - это правильный путь. Создание документа Word с нуля на самом деле довольно просто, и есть много учебников.

Просто потому, что вы отметили свой вопрос с помощью Sharepoint. Я не уверен, используете ли вы Sharepoint - если это так, то есть какой-то пример кода около Generating Documents from SharePoint Using Open XML Content Controls непосредственно от Microsoft.

+1

To Rewinder: автоматизация не работает на сервере, потому что (я думаю) о бесконечных проблемах с разрешениями. Microsoft говорит: «Не пытайтесь использовать Office Automation на сервере, потому что Office не был предназначен для этого» ... http://support.microsoft.com/?id=257757 –

+0

В OxA3: мне нужно сгенерировать документ Word, который будет совместим с Word обратно в Word 97-2003 –

+0

To moontear: Должен ли я идти по маршруту XML? Я думал, что Sharepoint позволил людям обмениваться офисными документами на сервере. Поэтому я надеялся, что просто смогу открыть документ Word, изменить часть текста в нем (закладки), а затем сохранить его там, где я хочу. –

1

Скорее всего, причина, по которой код работал на вашей машине разработки, но не на сервере, состоит в том, что на вашей машине разработки, возможно, установлены первичные сборки Office/Word Primop, но вы не говорите, установлены ли они на сервере или не. Я предполагаю, что это не так.

Если пользователи на Microsoft Office XP (2002) или Office 2003 И имеют Microsoft Office Compatibility Pack установлен, то лучшим вариантом является использование Open XML SDK для создания .docx файла на лету, что пользователи будут который можно открыть, установив пакет совместимости. Как только ваши пользователи откроют документ, они смогут сохранить его в обычном формате .doc.

Если ваша пользовательская база включает пользователей Office 2000 или более ранних версий, вам не повезло, поскольку для этих версий Office нет пакета совместимости.

Вы не сможете сгенерировать формат .doc на веб-сервере, не имея установленных ассемблеров Office, и, как указали другие, это настоятельно не поощряет Microsoft.

+0

Документ, который я отправляю в качестве вложения, должен быть документом Word, совместимым с 97. –

+0

Существует разница между совместимостью и версией Word, которую установили ваши пользователи. Вообще говоря, документ Word, созданный с версии 2003 с расширением .doc, будет обратно совместим с Word 97, хотя любой контент в документе, зависящий от функций в более поздних версиях, не будет доступен в предыдущих версиях. Я предлагаю вам использовать SDK Open XML для создания документа .docx, который, предоставляя вашим пользователям Word XP или Word 2003, может использовать пакет совместимости Office 2007 для открытия документа, а затем, если нужно, сохраните его в старшем .doc. – Jazza

0

Другие комментировали, почему автоматизация слова, вероятно, не работает и почему его нет, нет.

OpenXML хорош, но поддерживает только более новые форматы файлов.

Если вы хотите поддерживать форматы файлы старше .doc (Word97 и т.д.), то вы будете иметь, чтобы смотреть на другой компонент и, вероятно, является коммерческим, таким как (без подключения) Aspose Words

+0

Так что я не могу получить доступ к документу Word 97 на сервере Sharepoint, изменить его и сохранить его? Я не могу найти код, который показывает, как открыть документ на сервере sharepoint из формы .Net. –

0

Не когда-либо используйте Office Automation из службы. Office Automation была разработана для автоматизации рабочего стола . Он предполагает наличие пользовательского интерфейса.

Он также предполагает одиночную резьбу. Сервер (особенно веб-сервер любого типа) будет работать на нескольких потоках, а код Office Automation просто не обрабатывает это вообще.

Кроме того, у вас должна быть действующая лицензия Office для каждого конечного пользователя, который использует код, который вызывает Office Automation.

1

Считаете ли вы использование RTF? RTF-файлы - это просто текст, поэтому вы можете использовать обычный ввод/вывод файла .Net для чтения в файле, изменить интересующий бит и затем записать его снова. RTF могут быть прочитаны версиями Word с 97 и более ранних версий (и, возможно, более старых версий). Один из недостатков - если вам нужно внести какие-либо сложные и т. Д. Изменения в документ, что может быть затруднено, если вы просто обрабатываете RTF как текст.

+0

Будет ли RTF обрабатывать то, что фактически является бланком? С логотипами и другой графикой в ​​верхнем и нижнем колонтитуле и т. Д.и с закладками, чтобы я мог динамически заменить конкретный текст? –

Смежные вопросы