我遵循这个非常有前途的link来让我的程序读取Excel文件,但我得到的问题是System.OutOfMemoryException
。据我所知,这可能是因为这段代码
object[,] valueArray = (object[,])excelRange.get_Value(
XlRangeValueDataType.xlRangeValueDefault);
将整个数据列表加载到一个变量中。我不明白为什么库的开发人员决定这样做,而不是制作一个迭代器,它将逐行解析一个表。因此,我需要一些能够读取大型(> 700K行)Excel文件的工作解决方案。
答案 0 :(得分:1)
我在我的一个C#
应用程序中使用以下函数:
string[,] ReadCells(Excel._Worksheet WS,
int row1, int col1, int row2, int col2)
{
Excel.Range R = WS.get_Range(GetAddress(row1, col1),
GetAddress(row2, col2));
....
}
一次性而不是逐个单元读取Range
的原因是性能。
对于每个小区访问,正在进行大量内部数据传输。如果Range
太大而无法放入内存,则可以用较小的块处理它。