C # Excel Interop ограничение строки -> HRESULT: исключение 0x800A03EC

У меня есть приложение C #, целью которого является хранение большого количества данных. Я использую Microsoft.Office.Interop.Excel (Microsoft.Office.Interop.Excel.dll Version 14.0.0.0), чтобы помочь мне в этом. У меня установлен Excel 2007.

Я использую следующие строки:

excelApp = new Microsoft.Office.Interop.Excel.Application(); excelWorkBook = excelApp.Workbooks.Add(misValue);//*--------> LINE NOT WORKING */ excelWorksheetBeingWritten = (Excel.Worksheet)excelWorkBook.Worksheets.get_Item(1); 

Мой код затем выполняет итерацию через большой список объектов, и каждый раз, когда строка должна быть записана, я делаю что-то вроде:

  var startCell = excelWorksheetBeingWritten.Cells[excelLineCounter, 1]; var endCell = excelWorksheetBeingWritten.Cells[excelLineCounter, 2]; string[] tmpArray = new string[2] { stringVar1, stringVar2 }; tmpRange = excelWorksheetBeingWritten.Range[startCell, endCell]; tmpRange.Value = tmpArray; 

Когда excelLineCounter превышает 65536, генерируется исключение «HRESULT: 0x800A03EC». Я прекрасно понимаю (в) знаменитый предиск Excel2007 ряд строк (это точно 65536). Я не понимаю, почему interops используют этот предел, когда Excel 2007 (моя версия) имеет документированный предел в 1.048.576 строк.

С другой стороны, если я заменю вышеприведенную «LINE NOT WORKING» следующим образом, она, как представляется, использует предел строки Excel 2007, и исключение исчезает:

excelWorkBook = excelApp.Workbooks.Open(@"H:\Workbook1.xlsx");//*--------> LINE WORKING */

Примечание: «Workbook1.xlsx» – это пустая книга, ранее сохраненная как «Книга Excel (* .xlsx)»

Может кто-нибудь, пожалуйста, скажите мне, какое колдовство мне нужно сделать, чтобы настроить объекты Excel Interop на использование ограничений Excel 2007 по умолчанию, желательно без сохранения ранее сохраненного пустого файла .xlsx?

Вчера я столкнулся с подобной проблемой, и решение заключается в изменении настроек Excel для создания файлов xlsx по умолчанию.

В Excel: Файл -> Параметры -> Сохранить -> Сохранить файлы в этом формате

Возможно, ваш по умолчанию «Excel 97-2003 (* .xls)», как у меня. Если вы измените его на «Excel Workbook (* .xlsx)», ваш код будет работать.

  • Нужно уточнение ответа на очистку объектов Excel Interop правильно
  • Условия формата Excel C # - Неверное исключение параметров
  • Как удалить завершающие пустые строки / столбцы
  • Как проверить, программно, если MS Excel существует на компьютере?
  • Загрузка динамически всех типов COM-файлов?
  • Excel interop MissingMethodException
  • Форматировать файл Excel с помощью C #
  • Текст усекается при назначении ячейки datarow в datatable в C #
  • Отличие между исключениями, вызванными операциями Excel Interop
  • .Net Excel Interop Удаление столбца очень медленно
  • Почему Excel не закрывается после создания PDF?
  • Interesting Posts

    Неверный адрес ячейки Excel VBA

    Скопировать TextBox в буфер обмена

    Попытка удалить строку, если в строке A нет данных: J

    Импортировать несколько файлов Excel в SQL Server 2008 R2 с использованием пакетов SSIS?

    Как найти группы людей, которые участвовали в нескольких мероприятиях вместе?

    Самая длинная колонка в многоколоночном диапазоне Excel (в одной формуле)?

    SELECT и UPDATE в хранимой процедуре, вызванной из Excel с помощью VBA

    VBA волнуется, когда я пытаюсь использовать максимальную функцию?

    Используя VB Script, как мне автоматизировать создание файла Excel, содержащего список файлов из определенной папки?

    Как ссылаться на имя листа в моей формуле SUMPRODUCT в MS Excel?

    Разберите файл Excel с помощью C #

    Извлечь два числа из строки в Excel

    Экспорт данных TableView JavaFX в Excel (XLS)

    Прокрутите все вложенные папки и файлы в папке и напишите последнюю измененную информацию о дате в электронную таблицу Excel

    libxls: xls_open (), потому что путь к файлу

    Давайте будем гением компьютера.