我使用ExcelDataReader读取excel文件(*.xlsx, *.xlsx)。Xlsb, *.xls),我正在努力加快它的进程。
它工作得很好,但是显示行需要时间。注意:我正在使用一个大的excel文件(14000行),我只想显示前五行。
我的进度:
FileInfo fileInfo = new FileInfo(filePath);
if (fileInfo.Extension.ToLower().Contains(".xls"))
{
using (FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read))
{
using (var excelReader = ExcelReaderFactory.CreateReader(stream))
{
DataTable result = excelReader.AsDataSet().Tables[0];
for (int i = 0; i < 6; i++)
{
resultList.Add(string.Join(",", result.Rows[i].ItemArray).Split(',').ToArray());
}
excelReader.Close();
}
}
}
return resultList;
不要使用reader.AsDataSet()
-这会将整个文件加载到内存中,这有很大的开销。相反,使用读取器api,如reader.Read()
一次读取一行,reader.GetValue()
获取当前行的值。