#c# #ms-word #ms-office #office-interop
#c# #ms-word #ms-office #office-interop
Вопрос:
О Microsoft.Офис.Interop.Word.
Я установил PIA и Microsoft Office 2010 на свой веб-сервер, но я не могу сгенерировать .doc при запуске приложения, опубликованного на моем веб-сервере. Когда я запускаю свое приложение на локальном хосте, оно работает нормально и генерирует файл .doc.
Я должен выполнить некоторую настройку на стороне сервера, чтобы разрешить создание файлов .doc?
Комментарии:
1. Видите ли вы какие-либо исключения в журналах сервера?
2. Диспетчеру очереди печати не удалось повторно открыть существующее подключение к принтеру, поскольку он не смог прочитать информацию о конфигурации из раздела реестра … 1005 Принтеры Подключения. Диспетчеру очереди печати не удалось открыть раздел реестра. Это может произойти, если раздел реестра поврежден или отсутствует, или если реестр недавно стал недоступен.
Ответ №1:
Помните, что Office 2010 не был разработан для запуска внутри веб-сервера (например, безопасность потоков может быть не гарантирована), поэтому в дальнейшем вы можете столкнуться с большими трудностями.
Вместо этого рассмотрите возможность использования Open SDK 2.0 от Microsoft, который позволяет вам манипулировать (создавать, редактировать) Документы Office 2010, которые представляют собой просто упакованные (архивированные) XML-файлы. Эта технология гораздо лучше подходит для использования на сервере. Это также не требует наличия отдельной лицензии Office 2010 для каждого веб-сервера, на который вы собираетесь установить Office 2010.
Комментарии:
1. Я согласен с вами, но мне нужно быстрое решение, пока я реализую другое подобное решение.
2. @Lucas_Santos, быстрое решение не работает. Просто неправильно использовать Office Interop в серверном приложении. Это не то, для чего он был разработан.
3. @Lucas_Santos, потратьте время заранее, а не позже, когда вам придется отслеживать и устранять проблемы на вашем рабочем сервере, вызванные неправильным использованием библиотек DLL Office на сервере.
4. хорошо, но я работаю в унаследованном проекте, а другая компания реализует это решение, о котором я рассказал. Это неправильно, я согласен со всеми. Но для реализации другого решения мне нужно больше времени, а затем мне нужно решение для взаимодействия, пока я внедряю новое решение, например Open Sdk, как вы сказали
5. @Lucas_Santos, с Office Interop нет решения. Взаимодействие Office не работает в серверных приложениях, таких как ASP.NET . Это так просто. Таким образом, архитектор , который принял решение использовать Office Interop в серверном приложении, вероятно, должен заплатить дополнительное время, которое вам придется потратить на исправление его ошибок.
Ответ №2:
Для этого вы должны использовать Open XML SDK. Взаимодействия office являются устаревшими реликвиями и не должны использоваться.
Ссылка для скачивания:
http://www.microsoft.com/download/en/details.aspx?id=5124
Вот простой пример того, как создать документ Word:
public void HelloWorld(string docName)
{
// Create a Wordprocessing document.
using (WordprocessingDocument package = WordprocessingDocument.Create(docName, WordprocessingDocumentType.Document))
{
// Add a new main document part.
package.AddMainDocumentPart();
// Create the Document DOM.
package.MainDocumentPart.Document =
new Document(
new Body(
new Paragraph(
new Run(
new Text("Hello World!")))));
// Save changes to the main document part.
package.MainDocumentPart.Document.Save();
}
}
Смотрите Эту статью MSDN для получения более подробной информации:
http://msdn.microsoft.com/en-us/library/dd440953(v=office.12).aspx
Комментарии:
1. Это будет будущее моего приложения. Мне нужно время, чтобы реализовать это. Итак, на данный момент, пока я не закончил разработку Open SDK, мне нужно решение для Interop.Word
2. Скорее всего, это проблема совместимости, и вам, вероятно, придется скомпилировать ваше приложение для запуска в 32-разрядном режиме.
Ответ №3:
Взаимодействие Office НЕ поддерживается MS в «серверных сценариях» (к которым IIS / ASP.NET относится особым образом)… см. http://support.microsoft.com/default.aspx?scid=kb ;RU-США;q257757#kb2
Ваши варианты включают несколько библиотек (бесплатных и коммерческих) — например:
- MS OpenXML SDK (бесплатно)
- Aspose.Слова (коммерческие)
Что касается исключения, которое вы получаете:
Начиная с Windows Vista, было внесено несколько изменений, чтобы запретить любой службе Windows (IIS — это просто какая-то специальная служба) делать что-либо «похожее на рабочий стол» — это связано с проблемами безопасности… чтобы разрешить такую ситуацию, вам нужно будет обойти эти меры безопасности, реализованные MS, что я абсолютно НЕ рекомендую…