EPPlus - 行超出范围异常

时间:2016-03-25 19:42:39

标签: c# datatable epplus

我正在尝试使用EPPlus库将带有1000000条记录的数据表导入Excel。

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时是否有行限制大小?

3 个答案:

答案 0 :(得分:3)

您可能尝试导入超过1.000.000条记录。抛出此异常之前的最大值为1.048.576(与Excel 2010版本的最大行数specified完全相等)。

查看源代码:

ExcelRangeBase.csLoadFromDataTable方法的最后一行返回导入的excelrange:_worksheet.Cells[...]

您可以在ExcelRange.cs中找到此索引器的实现,然后您会看到该范围由ValidateRowCol验证(一直在底部)。

最后,当请求的行大于excel包的MaxRows属性时,此验证会抛出您提到的异常,该属性等于1.048.576

答案 1 :(得分:2)

当你得到“Row out of range”时,可能是row参数太高或太低了。 请记住,它从 1 开始计数。

答案 2 :(得分:0)

将列表放置在列表中时出现此错误。应该只是一个列表,而不是列表中的列表。

确切地说,我创建了一个对象列表,然后将其放入列表中,解析为JSON并使用JsonConvert.DeserializeObject(json,jsonFormat)加载到DataTable中。然后我得到了错误。