我正在使用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
}
Run Code Online (Sandbox Code Playgroud)
我有180,000行,结果非常慢.我不确定"转换"是否有效.反正我还能做得更快吗?
月亮
Man*_*oon 23
嗨,我找到了一个非常快的方法.
最好使用"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++;
}
Run Code Online (Sandbox Code Playgroud)