Привет, я анализирую таблицу Excel с Microsoft.Office.Interop.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.
Это нормально?Как можно решить.
Спасибо за ваше время и сотрудничество