Memory 使用Microsoft.Office.Interop.Excel解析Excel文件-在内存中挂起Excel.exe进程

Memory 使用Microsoft.Office.Interop.Excel解析Excel文件-在内存中挂起Excel.exe进程,memory,c#-4.0,process,freeze,excel-interop,Memory,C# 4.0,Process,Freeze,Excel Interop,您好,我使用Microsoft.Office.Interop.excel解析excel表。下面是我将excel表解析为数据表的代码。它工作得很好 public static DataTable ImportExcelToDataTable(String path) { var app = new Application {Visible = false}; Workbook workBook = app.Workbooks.Open(path,

您好,我使用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;
    }
公共静态数据表ImportExcelToDataTable(字符串路径)
{
var app=新应用程序{Visible=false};
工作簿=app.Workbooks.Open(路径,0,true,5,“,”,
true,XlPlatform.xlWindows,类型.缺失,false,
假,0,真,1,0);
工作表=工作簿。工作表;
var activeSheet=(工作表)sheets.Item[1];
范围activeSheetRange=activeSheet.UsedRange;
var dt=新数据表();
dt.列。添加(“ID”);
dt.列。添加(“名称”);

对于(int i=1;i您可能需要使用Marshal.ReleaseComObject-请参阅和的答案