こんにちは私は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プロセスがあります。
正常ですか?どのようにそれを解決することができます。
お手数をおかけしますが、よろしくお願いいたします。