HRESULT: 0x800A03EC на рабочем листе - PullRequest
21 голосов
/ 18 августа 2011

Я получаю HRESULT: 0x800A03EC для метода Worksheet.range.Количество рядов больше 70К.Office 2007.

Код:

Microsoft.Office.Interop.Excel.Range neededRange
    = currentWS.Range[cell.Cells[1, 1], cell.Cells[nRowCount, nColumnCount]];

Здесь мой счетчик строк превышает 65530.Перерывы на эту функцию.Я заметил, что он ломается только тогда, когда количество строк превышает 65530.

Ответы [ 22 ]

24 голосов
/ 18 августа 2011

Эта проблема возникает, если вы используете обратно совместимый лист (.xls) вместо .xlsx

Чтобы разрешить открытие листов в версии до Office 2007, она не может содержать более 65 тыс. Строк. Вы можете проверить количество строк на вашем листе, используя ctrl + стрелка вниз, пока не дойдете до дна. Если вы попытаетесь получить диапазон, превышающий это количество строк, это приведет к ошибке

19 голосов
/ 01 ноября 2012

Мы получали то же самое.Исключением было

Stacktrace: в Microsoft.Office.Interop.Excel._Workbook.SaveAs (имя файла объекта, объект FileFormat, пароль объекта, объект WriteResPassword, объект ReadOnlyRecommended, объект CreateBackup, XlSaveAsAccessMode AccessMode, объект ConflictRes, Object AddToMru, Object TextCodepage, Object Text VisualLayout, Object Local) `

с внутренним исключением

Исключение из HRESULT: 0x800A03EC 2012-11-01 10:37: 59`

Нам удалось решить проблему с помощью информации из этого поста , которую я привожу здесь для удобства ...

  1. Войдите на сервер как администратор.
  2. Перейдите в «Пуск» -> «Выполнить» и введите «taskmgr»
  3. Перейдите на вкладку процесса в диспетчере задач и установите флажок «Показать процессы из всех».пользователи "
  4. Если в списке есть записи" Excel.exe ", щелкните правой кнопкой мыши запись и выберите" Завершить процесс "
  5. Закрыть диспетчер задач.
  6. Перейтиначать" -> «Выполнить» и ввести «services.msc»
  7. Остановить службу автоматизации Excel, если она работает.
  8. Перейти к «Пуск» -> «Выполнить» и ввести «dcomcnfg»
  9. Откроется окно служб компонентов, разверните «Корень консоли» -> «Компьютеры» -> «Конфигурация DCOM»
  10. Найдите «Приложение Microsoft Excel» в списке компонентов.
  11. Щелкните правой кнопкой мыши на записи и выберите «Свойства»
  12. Перейдите на вкладку «Удостоверение» в диалоговом окне свойств.
  13. Выберите «Интерактивный пользователь».
  14. Нажмите кнопку «ОК».
  15. Переключитесь на консоль службы
  16. Запустите службу автоматизации Excel
  17. Проверьте приложение еще раз.
14 голосов
/ 02 февраля 2015

Я столкнулся с этой проблемой.

Обнаружил, что где-то в моем коде я просил его считать, начиная с 0 (как вы это делаете в коде C #).

Оказывается, начинается подсчет Excelв 1.

12 голосов
/ 11 февраля 2013

Рассматривая различные ответы выше и опираясь на свой собственный недавний опыт (я получил этот код ошибки, делая что-то совершенно не связанное - настройка Application.Calculation), я пришел к выводу, что один и тот же код ошибки используется для указания нескольких несвязанных проблем.@Garreh, вероятно, вам следует задавать новый вопрос (не то, чтобы кто-нибудь смог помочь, основываясь только на коде ошибки).Я видел то же самое, работая с Word Interop из C #, где один и тот же HRESULT, кажется, используется почти для всех типов ошибок.Я никогда не нашел удовлетворительной документации Microsoft о том, что могут означать коды.

5 голосов
/ 07 ноября 2012

Это также может быть вызвано тем, что в разделе, в который вы сохраняете, нет места.

Я проверил свой HD и обнаружил, что он был максимальным. Перемещение некоторых ненужных файлов в другой раздел решило мою проблему.

3 голосов
/ 23 октября 2012

Просто файл Excel поврежден. Лучшее решение - изменить / восстановить файл. (Сделать копию существующего файла и переименовать его)

1 голос
/ 18 августа 2011

Я не понимаю проблему. Но вот что решило мою проблему.

Перейдите в Параметры Excel> Сохранить> Сохранить файлы в этом формате> Выберите «Книга Excel (*. Xlsx)». Ранее мои рабочие книги открывались в [режиме совместимости], а теперь они открываются в обычном режиме. Функция дальности отлично с этим работает.

1 голос
/ 09 июня 2016

Просто к вашему сведению, произошла ошибка при попытке применить стиль строки ....

wSheet.Rows(y).Style = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red)
1 голос
/ 03 января 2019

Я получил этот код ошибки 0x800A03EC при попытке сохранить файл Excel, созданный в моем приложении .Net в VS 2017. Я изменил свойство объекта Excel.Application Visible = True и позволил ему работать до точки сбоя.Попытался завершить шаги вручную в Excel, а затем обнаружил, что не могу сохранить файл из-за отсутствия прав доступа к папке.Я добавил разрешение на запись в папку, и ошибка исчезла.

1 голос
/ 02 января 2018

Это прямо не отвечает на вопрос, но я получаю эту ошибку при открытии файла xlsx.Проблема заключалась в том, что в пути к файлу я использовал косую черту.См. Также https://stackoverflow.com/a/24635904/5932003. Раньше он работал в предыдущих версиях Excel, но не с Версией 1711 (сборка 8730.2127).

Мне удалось диагностировать проблему с помощью IDispatch-> Invoke (..., EXCEPINFO, ...).Объект EXCEPINFO содержал полезное описание того, что пошло не так.Я был на земле C ++, но я подозреваю, что код C #, подобный этому посту SO, поможет: Упаковка IDispatch Invoke с параметрами в C # (с DISPPARAMS) .

...