System.Runtime.InteropServices.COMException (0x800A03EC) - PullRequest
28 голосов
/ 10 декабря 2010

Microsoft.Office.Interop.Excel.WorkbookClass.SaveAs() метод работает нормально на Windows Server 2003, а также на XP, но не на Windows Server 2008. Я скопировал его, поскольку он дал все Dll и разрешения

Я также перепробовал все решения, представленные в сети, такие как настройки культуры и разрешение DCOM.

Получение следующей ошибки:

System.Runtime.InteropServices.COMException (0x800A03EC): исключение от HRESULT: 0x800A03EC

в

Microsoft.Office.Interop.Excel.WorkbookClass.SaveAs (имя файла объекта, Объект FileFormat, Пароль объекта, Объект WriteResPassword, Объект ReadOnlyRecommended, объект CreateBackup, XlSaveAsAccessMode AccessMode, объект ConflictResolution, объект AddToMru, объект TextCodepage, Object TextVisualLayout, Object Local)

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

Ответы [ 7 ]

49 голосов
/ 15 декабря 2010

Найден ответ ....... !!!!!!!

Официально Microsoft Office 2003 Interop не поддерживается на сервере Windows 2008 от Microsoft.

Но после многих перестановок и комбинаций с кодом и поиском мы нашли одно решение, которое подходит для нашего сценария.

Решение состоит в том, чтобы устранить разницу между тем, как Windows 2003 и 2008 поддерживает структуру папок, потому что Office Interop зависит от папки рабочего стола для открытия / сохранения файлов. В системе 2003 находится папка рабочего стола в systemprofile, которая отсутствует в 2008 году.

Итак, когда мы создаем эту папку в 2008 году в соответствующей иерархии, как указано ниже; Офис Interop может сохранить файл по мере необходимости. Эта папка рабочего стола должна быть создана в

C: \ Windows \ System32 \ Config \ systemprofile

И

C: \ Windows \ SysWOW64 \ Config \ systemprofile

Это сработало для меня ...

Также проверьте, установлен ли .NET 1.1, потому что он необходим Interop и не предустановлен Windows Server 2008

Или вы также можете использовать метод SaveCopyas (), который просто принимает аргумент в качестве строки имени файла)

Спасибо, ребята ..!

12 голосов
/ 18 июля 2015

Попробуй, как у меня получилось ...

  1. Перейдите в «Пуск» -> «Выполнить» и введите «dcomcnfg»
  2. Откроется окно служб компонентов, разверните «Корень консоли» -> «Компьютеры» -> «Конфигурация DCOM»
  3. Найдите «Приложение Microsoft Excel» в списке компонентов.
  4. Щелкните правой кнопкой мыши на записи и выберите «Свойства»
  5. Перейдите на вкладку «Удостоверение» в диалоговом окне свойств.
  6. Выберите «Интерактивный пользователь».

любезно предоставлено Последний абзац, упомянутый здесь

5 голосов
/ 15 декабря 2010

Некоторые поиски в Google показывают, что потенциально у вас есть поврежденный файл:

http://bitterolives.blogspot.com/2009/03/excel-interop-comexception-hresult.html

и что вы можете указать Excel открыть его в любом случае с параметром CorruptLoad, с чем-то вроде...

Workbook workbook = excelApplicationObject.Workbooks.Open(path, CorruptLoad: true);
2 голосов
/ 26 января 2012

Я видел ту же ошибку при попытке сохранить файл Excel.Код работал нормально, когда я использовал MS Office 2003, но после обновления до MS Office 2007 я начал видеть это.Это могло произойти всякий раз, когда я пытался сохранить файл Excel на сервере или в удаленном общем ресурсе.

Мое решение, хотя и элементарное, работало хорошо.Я только что программа сохранила файл локально, как на диске C: \ пользователя.Затем используйте метод «System.IO.File.Copy (File, Destination, Overwrite)» для перемещения файла на сервер.Затем вы можете удалить файл на диске C: \.

Прекрасно работает и просто.Но по общему признанию не самый изящный подход.

Надеюсь, что это помогает!У меня было множество проблем с поиском каких-либо решений в Интернете, пока эта идея не пришла мне в голову.

1 голос
/ 24 октября 2014

Это проблема с разрешением, когда IIS работает У меня была эта проблема, и я решил ее таким образом

Я пошел по папкам

C: \ Windows \ System32 \ config \ SystemProfile

и

C: \ Windows \ SysWOW64 \ config \ SystemProfile

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

Щелкните правой кнопкой мыши-> Безопасность карты-> Нажмите Правка-> Добавить untente «Пользователь Autenticadet» и назначьте права доступа.

На данный момент все решено, если у вас все еще есть проблемы, попробуйте дать все разрешения «Все»

0 голосов
/ 03 июля 2019

В моем случае проблема заключалась в том, что заголовок был оформлен как «Заголовок 1», но этот стиль не существовал в Word, и я получаю сообщение об ошибке, поскольку это не был Office на английском языке.

0 голосов
/ 29 февраля 2012

Для всех тех, кто все еще испытывает эту проблему, я просто потратил 2 дня, чтобы разыскать кровавую вещьЯ получал ту же ошибку, когда в наборе данных не было строк.Кажется очевидным, но сообщение об ошибке очень неясно, следовательно, 2 дня.

...