我正在使用Microsoft.Office.Interop.Excel读取在内存中打开的电子表格。
gXlWs = (Microsoft.Office.Interop.Excel.Worksheet)gXlApp.ActiveWorkbook.ActiveSheet;
int NumCols = 7;
string[] Fields = new string[NumCols];
string input = null;
int NumRow = 2;
while (Convert.ToString(((Microsoft.Office.Interop.Excel.Range)gXlWs.Cells[NumRow, 1]).Value2) != null)
{
for (int c = 1; c <= NumCols; c++)
{
Fields[c-1] = Convert.ToString(((Microsoft.Office.Interop.Excel.Range)gXlWs.Cells[NumRow, c]).Value2);
}
NumRow++;
//Do my other processing
}
我有18万行,结果却很慢。我不确定“转换”是否有效。无论如何,我可以更快地做到这一点吗?
月亮
最佳答案
嗨,我发现了一种非常快的方法。
最好使用“get_range”一次性读取全部数据。这会将数据加载到内存中,我可以像普通数组一样遍历整个内存。
Microsoft.Office.Interop.Excel.Range range = gXlWs.get_Range("A1", "F188000");
object[,] values = (object[,])range.Value2;
int NumRow=1;
while (NumRow < values.GetLength(0))
{
for (int c = 1; c <= NumCols; c++)
{
Fields[c - 1] = Convert.ToString(values[NumRow, c]);
}
NumRow++;
}
关于c# - 如何在C#中快速读取Excel电子表格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7613898/