Исключение HResult 0x800a03ec при попытке открыть Excel с помощью Microsoft.Офис.Взаимодействие.Превосходить.Рабочая тетрадь.Открыть()



При попытке открыть файл excel на клиентской машине возникает следующее исключение:



Exception from HRESULT: 0x800A03EC


Внутренние исключения: (пусто)



Трассировка Стека:



   at Microsoft.Office.Interop.Excel.Workbooks.Open(String Filename, Object UpdateLinks, Object ReadOnly, Object Format, Object Password, Object WriteResPassword, Object IgnoreReadOnlyRecommended, Object Origin, Object Delimiter, Object Editable, Object Notify, Object Converter, Object AddToMru, Object Local, Object CorruptLoad)
at (own assembly)


Этот HResult является очень общей ошибкой, я не смог найти никакой полезной информации по нему.



Мои Настройки:



Служба WCF, работающая внутри службы Windows. Точно такая же установка работает и на трех других машинах.



Вещи, которые я могу исключить:




  • Неверный Путь

  • файл не работает. существует

  • файл поврежден

  • файл защищен от записи


То, что я сделал:




  • создал папки рабочего стола, как показано здесь (второй ответ) https://social.msdn.microsoft.com/Forums/vstudio/en-US/4d6c383a-94eb-4898-9d22-aa4bb69be25b/

  • дали папкам рабочего стола разрешения" Everyone "или" Jeder " ("Jeder" - эквивалент "Everyone"в немецком языке)

  • запустил службу с текущим активным Пользователь

  • изменил конфигурацию DCOM для Excel, как советует Heidi2 (см. ссылку выше)

  • изменен с Office 365 на Office Professional Plus

  • Locale устанавливается в en-US при попытке открыть файл

  • открыл файл вручную, который должен быть открыт: нет ошибок / предупреждений / диалогов пользователя из excel

  • установлен англо-американский на целевой машине

  • написал не WCF службу, которая запускает dll, которая выполняет запрос взаимодействия

  • написал Консольное приложение, которое запускает библиотеку dll, выполняющую запрос взаимодействия


Некоторые Наблюдения:




  • Если я удаляю папки рабочего стола (см. Мои первые "вещи, которые я сделал"), я получаю ошибку, описанную и разрешенную здесь: Microsoft Office Excel не может получить доступ к файлу 'c:inetpubwwwrootTimesheetApp_DataTemplate.xlsx '

  • Excel открыт в течение короткого времени в диспетчере задач, в то время как dll пытается открыть файл excel

  • пока у меня были Office 365 установлен, задачи Office Click-Once загружаются в Диспетчере задач, иногда замораживая приложение. Вот почему я переключился на Professional Plus

  • Если активный язык установлен на английский US, эта ошибка больше не выбрасывается; но изображения, которые должны быть визуализированы взаимодействием, отображаются пустыми


Чего мне здесь не хватает?

978   2  

2 ответов:

Извините-я знаю, что это косвенный ответ, хотя я бы рекомендовал вам следовать дальше. У меня лично есть очень плохой опыт работы с Excel Interop services (ASP.NET применение). Насколько мне известно, Microsoft не рекомендует автоматизацию взаимодействия с сервером.

Даже если вы решите эту проблему, вы можете столкнуться с проблемами утечки памяти, производительности и т. д. В моем предыдущем проекте мы продвинулись с Excel interop automation до развертывания. Мы наткнулись на так много проблем (Excel Процессы взаимодействия не закрываются должным образом и т.д.) что нам пришлось все переписать на OpenXML.

По возможности используйте новый формат OpenXML. существует библиотека ClosedXML, которая упрощает работу с ней.

Почему OpenXML vs Interop?:

  1. Эффективность (OpenXML легкий)

  2. Нет риска утечки памяти

  3. Простота использования

Прежде чем попробовать это решение, убедитесь, что вы прочитали абзац" то, что я сделал " из вопроса (и попробовали то, что относится к вам)

Исключение было выдано при открытии документа; на машине, которая сгенерировала Excels, файлы были сгенерированы недействительными.

Решение состояло в том, чтобы изменить формат чисел.

Перейдите в конфигурацию системы - > Время, язык и регион -> язык

Зайдите в конфигурация -> время, язык и регион -> язык

Нажмите на выделенный элемент. Гиперссылка

Откройте Дополнительные Настройки

Откройте Дополнительные Настройки

Измените разделитель на точку "." Измените разделитель на точку "."

Comments

    Ничего не найдено.