嗨,我用 Microsoft.Office.Interop.Excel 解析 excel 表。这是我将excel表解析为数据表的代码。它运作良好。
public static DataTable ImportExcelToDataTable(String path)
{
var app = new Application {Visible = false};
Workbook workBook = app.Workbooks.Open(path, 0, true, 5, "", "",
true, XlPlatform.xlWindows, Type.Missing, false,
false, 0, true, 1, 0);
Sheets sheets = workBook.Worksheets;
var activeSheet = (Worksheet) sheets.Item[1];
Range activeSheetRange = activeSheet.UsedRange;
var dt = new DataTable();
dt.Columns.Add("ID");
dt.Columns.Add("Name");
for (int i = 1; i <= activeSheetRange.Rows.Count; i++)
{
DataRow dr = dt.NewRow();
for (int j = 1; j <= activeSheetRange.Columns.Count; j++)
{
string value = ((Range) activeSheetRange.Cells[i, j]).Value2.ToString();
dr[j - 1] = value;
}
dt.Rows.Add(dr);
dt.AcceptChanges();
}
app.Quit();
app.Workbooks.Close();
GC.Collect();
return dt;
}
问题我运行应用程序(控制台)调用此方法并关闭控制台应用程序。如果我签入 TaskManager 进程,我会看到 Excel.exe 进程仍在运行。
如果我将此方法调用 100 次,我的内存中有 100 个 excel.exe 进程。
这是正常的 ?怎么能解决。
感谢您的时间和合作