使用C#中的Microsoft.Office.Interop.Excel从excel读取大量数据

时间:2011-07-18 23:14:53

标签: c# office-interop

我正在读取.xlsx文件(在C#中)有大量数据(使用Microsoft.Office.Interop.Excel,最多几列的长度为415000,该文件有12列,每列有不同的长度。我想找到长度特定列的例如3,4,5

我试图做类似下面的事情(因为我没有看到任何直接函数来计算列的实际长度)但是给出的存储空间不足以完成此操作。 (HRESULT异常:0x8007000E(E_OUTOFMEMORY))第1行

int rows = excelWorksheet.UsedRange.Rows.Count;
Excel.Range excelRange = excelWorksheet.UsedRange;
object[,] valueArr = (object[,])excelRange.get_Value(Excel.XlRangeValueDataType.xlRangeValueDefault);.......1

int[] columnSize = new int[valueArr.Length / rows+1];

然后循环遍历列以通过循环查找每列的长度,直到其行具有数据

有人可以为此提供帮助吗?是否有任何直接的方法来查找列的长度...

1 个答案:

答案 0 :(得分:0)

考虑使用Microsoft的Open XML SDK,它允许您将XLSX文件作为XML文档加载。使用Linq-to-XML可能是一种更有效的操作大型Excel文件的方法,而不是使用Excel和进行互操作。

您可以在MSDN上找到有关Open XML的更多信息。