joe_j Ответов: 4

ошибка взаимодействия microsoft office


Привет,

я пытаюсь открыть файл excel на клиентском ПК с помощью asp.net и еще vb.net-да.
я уточнил
Imports Microsoft.Office.Interop
в aspx-файл.файл VB. и это прекрасно работает в тестовой среде.

но как только я размещаю его на сервере (MS server 2003) с установленным MS office 2003, он выдает ошибку. и когда я проверяю, это показывает "microsoft.office.interop не содержит никакого публичного члена или не может быть найден"

и когда я использую блок try catch он выдает следующую ошибку
Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80070005 Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)). 

Пожалуйста, помогите мне в этом.

спасибо
Джо

Richard Deeming

Для всех, кто наткнется на этот старый вопрос:

Код, запущенный на сервере НЕ МОГУ использовать руководство для открытия файла на клиенте.

Файл откроется на сервере там , где его никто никогда не увидит.

И нет, вы также не можете использовать Office Interop на клиенте.

То только чтобы открыть файл на клиенте, нужно записать его в ответ с соответствующим заголовком типа контента. Затем клиент должен решить, что делать с этим файлом - вы не можете заставить их открыть его; вы не можете заставить их сохранить его в определенном пути; вы не можете заставить их сохранить его вообще.

4 Ответов

Рейтинг:
24

joe_j

Привет,

я понял, как это сделать. Мне пришлось установить разрешение NETWORK SERVICES на EXCEL DCOM на сервере.

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

ну я и выяснил это добавив

xlapp.quit()
решает проблему блокировки файла.

и теперь все в порядке

в любом случае спасибо


Рейтинг:
2
Рейтинг:
0

Member 8086579

сообщение об ошибке:

Получение фабрики COM - класса для компонента с CLSID {00024500-0000-0000-C000-000000000046} не удалось из-за следующей ошибки: доступ 80070005 запрещен. (Исключение из HRESULT: 0×80070005 (E_ACCESSDENIED)).
Решение:

Это проблема разрешений COM.

Запустите > Run > dcomcnfg (или "mmc -32"), а затем добавьте оснастку Component Services вручную, если вы не можете найти приложение на шаге 3)
Перейдите в службы компонентов и GT; компьютеры &ГТ; Мой компьютер &ГТ; настройка DCOM
Найдите приложение MS, вызывающее у вас проблемы (например, “приложение Microsoft Excel” для Excel или “документ Microsoft Word 97 – 2003” для Word)
Щелкните правой кнопкой мыши > Свойства
На вкладке Безопасность выберите пункт Настроить в разделе Разрешения на запуск и активацию и нажмите кнопку Изменить…
Добавьте учетную запись, под которой работает сайт (например, сетевая служба), и назначьте разрешения на локальный запуск и локальную активацию
Вуаля!

сообщение об ошибке:

[COMException (0x800a03ec): Microsoft Excel не может получить доступ к файлу " <filename>". Есть несколько возможных причин:
• Имя файла или путь к нему не существует.
• Файл используется другой программой.
• Книга, которую вы пытаетесь сохранить, имеет то же имя, что и открытая в данный момент книга.
Решение:

Это, по-видимому, проблема с Excel/Word/etc, не имеющим доступа к профилю при запуске через маршрут взаимодействия.

открыть Windows Explorer
В зависимости от того, установлена ли 32-битная или 64-битная версия office, вам нужно будет выполнить одно (или оба) из следующих действий:
Установка 32-битного офиса: перейдите к C:\Windows\System32\config\systemprofile
Установка 64-битного офиса: перейдите к C:\Windows\SysWOW64\config\systemprofile
Убедитесь, что папка "рабочий стол" существует (создайте ее, если ее там нет)
Щелкните правой кнопкой мыши > Свойства
На вкладке Безопасность: добавьте учетную запись, под которой работает сайт (например, сетевая служба) с разрешениями по умолчанию (Read &execute; List folder contents; Read)
Вуаля!


Fayaz7Wonders

Привет,
Большое спасибо за ваше решение.Он работает, но только тогда, когда я вошел на сервер.Когда я вышел из системы, произошла та же ошибка при экспорте Excel.Есть ли у вас какое-либо постоянное решение для этого?

J.Santichai

Хорошо сделано для этого решения :)

id8labs

Привет Уэс День,
У меня такая же проблема, на моем локальном хосте, когда я запускаю программу exel и word file создает и загружает правильно, но когда я публикую код на сервере, я получаю ошибку отказа в доступе.
"Получение фабрики COM-класса для компонента с CLSID {000209FF-0000-0000-C000-000000000046} не удалось из-за следующей ошибки: 80070005 Доступ запрещен. (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED))."
Я искал на стольких веб-сайтах и попробовал это
Начало и GT; выполнить &ГТ; программу dcomcnfg
Службы компонентов и GT; компьютеры &ГТ; Мой компьютер &ГТ; настройка DCOM
На моем локальном хосте у меня нет "приложения Microsoft Excel и документа Microsoft Word 97 – 2003", а на моем сервере у меня есть эти параметры. Я выбрал все возможные учетные записи, которые доступны, и дал полное разрешение. Все еще сталкиваюсь с той же проблемой. Мне нужно добавить учетную запись или что?
Пожалуйста, помогите мне в этом. Большое спасибо.

Рейтинг:
0

hadisalehy

1. Убедитесь, что на сервере установлена среда выполнения Office.
2. Если вы используете Windows Server 2008, то использование office interops-это длинная конфигурация, и вот шаги.
Лучше всего перейти на Open XML или вы можете настроить его как показано ниже
• Установите последнюю версию MS Office Pro (я использовал 2010 Pro)
• Создайте Пользователя ExcelUser. Назначьте WordUser с группой Admin
• Перейти к компьютеру -> Управление
• Добавить пользователя с нижеприведенными опциями
• Параметры Пользователя Пароль Никогда Не Истекает
• Пароль Не Может Быть Изменен
Ком+ Конфигурации
• Перейдите в Панель управления - > администратор -> службы компонентов -> DCOM Config
• Откройте Свойства Microsoft Word 97 - 2003
• Общие сведения -> уровень аутентификации : нет
• Безопасность -> настройка всех 3 разрешений, чтобы позволить всем
• Личность -&ГТ; этот пользователь -&ГТ; использовать ExcelUser /пароль
• Запустите приложение Excel, чтобы убедиться, что все в порядке
3.измените параметры безопасности приложения Microsoft Excel в DCOM Config.
Панель управления --&ГТ; администрирование - >У компонента сервисы --&ГТ;компьютеры --&ГТ; мой компьютер --&ГТ;настройка DCOM --&ГТ; ПО Microsoft Excel приложения.
Щелкните правой кнопкой мыши, чтобы открыть диалоговое окно свойств. Перейдите на вкладку Безопасность и настройте разрешения


Richard Deeming

Рекомендации по автоматизации работы офиса на стороне сервера[^]
В настоящее время корпорация Майкрософт не рекомендует и не поддерживает автоматизацию приложений Microsoft Office из любого автоматического, неинтерактивного клиентского приложения или компонента (включая ASP, ASP.NET, DCOM и NT Services), поскольку Office может демонстрировать нестабильное поведение и/или взаимоблокировку при запуске Office в этой среде.

Не говоря уже о том, что исходный вопрос совершенно ошибочен - код, запущенный на сервере, не может открыть файл на клиенте с помощью Office Interop. Файл откроется на сервере, где его никто никогда не увидит.