解析excel文件的最佳做法
本文关键字:最佳 excel 文件 解析 | 更新日期: 2023-09-27 18:05:21
我在解析excel文件时面临一个问题。我的文件有5000多行。当我解析它时,花了很长时间,我想问是否有更好的方法来这样做。
public static List<List<List<string>>> ExtractData(string filePath)
{
List<List<List<string>>> Allwork = new List<List<List<string>>>();
Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook workBook = excelApp.Workbooks.Open(filePath);
foreach (Microsoft.Office.Interop.Excel.Worksheet sheet in workBook.Worksheets)
{
List<List<string>> Sheet = new List<List<string>>();
Microsoft.Office.Interop.Excel.Range usedRange = sheet.UsedRange;
//Iterate the rows in the used range
foreach (Microsoft.Office.Interop.Excel.Range row in usedRange.Rows)
{
List<string> Rows = new List<string>();
String[] Data = new String[row.Columns.Count];
for (int i = 0; i < row.Columns.Count; i++)
{
try
{
Data[i] = row.Cells[1, i + 1].Value2.ToString();
Rows.Add(row.Cells[1, i + 1].Value2.ToString());
}
catch
{
Rows.Add(" ");
}
}
Sheet.Add(Rows);
}
Allwork.Add(Sheet);
}
excelApp.Quit();
return Allwork;
}
这是我的代码。
您的问题是您一次读取一个单元格,这是非常昂贵和低效的尝试读取一系列单元格。
下面的简单例子
Excel.Range range = worksheet.get_Range("A"+i.ToString(), "J" + i.ToString());
System.Array myvalues = (System.Array)range.Cells.Value;
string[] strArray = ConvertToStringArray(myvalues);
指向基本示例的链接读取excel
我建议不使用互操作,但odbc连接获取excel数据。这将允许您将excel文件作为数据库,并使用sql语句读取所需的数据。
如果这是一个选项,如果你的表有一个简单的结构,我建议尝试导出文件为。csv并应用简单的字符串处理逻辑。
你也可以试试Igos的建议
一种方法是使用类似ClosedXML库的东西直接读取.xlsx文件,而不是通过Excel互操作。