2016-03-25 5 views
0

Я пытаюсь импортировать данные с 1000000 записей в Excel, используя библиотеку EPPlus.EPPlus - исключение из диапазона вне диапазона

ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Demo"); 
var recordCount = dt.Rows.Count; 
ws.Cells["A5"].LoadFromDataTable(dt, true); 

Я получаю Row Out of Range исключение на ws.Cells["A5"].LoadFromDataTable(dt, true); линии

Он работал, когда у меня было 1000 записей.

Есть ли ограничение по лимиту при работе с EPPlus?

+0

Какой версии Excel вы используете? – dbugger

+0

Excel версия 2010 – gene

+0

Это будет содержать миллион записей. Старые версии только 64K. EPPlus не ограничивается. Из небольшого поискового запроса может возникнуть ошибка ws.Cells ["A5"]. – dbugger

ответ

2

Возможно, вы попытались импортировать чуть более 1.000.000 записей. Максимум, прежде чем выбрасывать это исключение, составляет 1.048.576 (что точно равно максимальному количеству строк specified для Excel версии 2010).

Посмотрите на исходный код:

Последняя строка метода LoadFromDataTable в ExcelRangeBase.cs возвращает импортированный excelrange: _worksheet.Cells[...]

Вы можете найти реализацию этого индексатор в ExcelRange.cs и там вы будете см., что диапазон подтвержден ValidateRowCol (весь путь внизу).

Наконец, эта проверка бросает исключение, вы упомянули, когда запрашиваемая строка больше, чем свойство MaxRows в качестве excelpackage, что составляет 1.048.576

Смежные вопросы