Взаимодействие с C # Excel: исключение из HRESULT: 0x800A03EC при использовании Range.set_Value

#c# #export-to-excel #excel-interop

#c# #экспорт в Excel #excel-взаимодействие

Вопрос:

Я использую библиотеки взаимодействия Office в приложении C # WinForms для записи около 25000 строк и 110 столбцов данных в Excel 2016. Максимальная длина значения для любого элемента составляет 420 символов.

Я использую 2-мерный массив объектов для чтения значений из таблицы данных и передаю этот массив Range.set_Value методу.

Приложение работает нормально для других таблиц данных, но для определенных данных я получаю сообщение об ошибке:

Исключение C # из HRESULT: 0x800A03EC

при использовании Range.set_Value . Я не могу определить, какая из 25000 строк и 110 столбцов вызывает ошибку.

Я, конечно, могу начать разбивать данные на небольшие фрагменты, пока не определю, какие именно строки и столбцы вызывают проблему, но есть ли лучший способ отладить проблему?

Данные могут содержать всевозможные специальные символы (данные генерируются сторонним приложением).

РЕДАКТИРОВАТЬ 1:

Я читал, что вы не можете добавить ячейку с более чем 8192 символами, если это Excel 2007. Но мои данные содержат максимум 425 символов в любой ячейке, а моя версия Excel — 2016.

Комментарии:

1. вы искали внутренние исключения?

2. Исключение InnerException равно нулю

3. COM-вызовы завершаются неудачно, у вас должен быть план для этого. Вам также следует рассмотреть возможность реализации IMessageFilter, чтобы вы могли указать COM повторить попытку. Однако даже с фильтром вам потребуется реализовать некоторую стратегию повторных попыток.

4. Вызов COM завершается с ошибкой только для определенных данных, содержащих около 25000 строк, и он не работает после нескольких попыток повтора. Тот же код работает для всех других наборов данных

Ответ №1:

Я смог найти проблему с данными после некоторых проб и ошибок.

Несколько элементов в двумерном массиве начинались с символа «=», который рассматривается как начало формулы в Excel. Поскольку значение элемента не было допустимой формулой, поэтому Excel выдавал исключение.

Я добавил к этим текстовым значениям символ ‘, и все работало нормально.

Надеюсь, это кому-нибудь поможет.