C# 获取数据后立即从后台进程中删除Excel工作表

C# 获取数据后立即从后台进程中删除Excel工作表,c#,.net-3.5,C#,.net 3.5,我使用下面的代码从内存中释放excel工作表,但在代码运行后,excel工作表仍在后台。请帮忙 公共void加载单(bool导出,字符串projectName) { xlApp = new Excel.ApplicationClass(); int rCnt = 0; { xlWorkBook = xlApp.Workbooks.Open(@"E:/try/" + DateTime.Now.T

我使用下面的代码从内存中释放excel工作表,但在代码运行后,excel工作表仍在后台。请帮忙

公共void加载单(bool导出,字符串projectName) {

        xlApp = new Excel.ApplicationClass();
        int rCnt = 0;           
            {

            xlWorkBook = xlApp.Workbooks.Open(@"E:/try/" + DateTime.Now.ToString("M.d.yyyy")+@"/"+ projectName+ ".xlsx", 0, false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", true, true, 0, true, 1, 0);
            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets["Upload Data"];
            range = xlWorkSheet.UsedRange;
            totalt.Text = range.Rows.Count.ToString();
            currentID.Text = (range.Rows.Count+1).ToString();  
          Excel.Range).Value2;              

            xlWorkBook.Close(true, null, null);
            xlApp.Quit();

            releaseObject(xlWorkSheet);
            releaseObject(xlWorkBook);
            releaseObject(xlApp);
        }

    }

private void releaseObject(object obj)
        {
            try
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
                MessageBox.Show("Released"+obj.ToString());
                obj = null;
            }
            catch (Exception ex)
            {
                obj = null;
                MessageBox.Show("Exception Occured while releasing object " + ex.ToString());
            }
            finally
            {
                GC.Collect();
            }
        }

从excel工作表中获取所需数据后,我希望将其从后台删除。

此类双点调用表达式:

xlWorkBook = xlApp.Workbooks.Open(/*args*/);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets["Upload Data"];
你应该换成

var workbooks = excel.Workbooks;
xlWorkBook  = workbooks.Open(/*params*/)
var worksheets = xlWorkBook.Worksheets;
xlWorkSheet = worksheets["Upload Data"];

//business logic here

Marshal.ReleaseComObject(xlWorkSheet);
Marshal.ReleaseComObject(worksheets);    
Marshal.ReleaseComObject(xlWorkBook);
Marshal.ReleaseComObject(workbooks);
Marshal.ReleaseComObject(excel);
有关详细信息,请参阅:

upd

xlApp = new Excel.ApplicationClass();
        int rCnt = 0;           
            {

            var workbooks = xlApp.Workbooks;
            xlWorkBook = xlApp.Workbooks.Open(@"E:/try/" + DateTime.Now.ToString("M.d.yyyy")+@"/"+ projectName+ ".xlsx", 0, false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", true, true, 0, true, 1, 0);
            var worksheets = xlWorkBook.Worksheets;
            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets["Upload Data"];
            range = xlWorkSheet.UsedRange;
            var rows = range.Rows;
            totalt.Text = rows.Count.ToString();
            currentID.Text = (rows.Count + 1).ToString();               

            xlWorkBook.Close(true, null, null);
            xlApp.Quit();


            Marshal.ReleaseComObject(rows);
            Marshal.ReleaseComObject(range);
            Marshal.ReleaseComObject(xlWorkSheet);
            Marshal.ReleaseComObject(worksheets);
            Marshal.ReleaseComObject(xlWorkBook);
            Marshal.ReleaseComObject(workbooks);
            Marshal.ReleaseComObject(xlApp);
        }

    }

你能粘贴interop excel使用的所有代码吗?另外,这是一个典型的问题,请查看代码什么意思
excel.Range).Value2;
。此代码未编译但似乎不起作用。你能更改我给出的上述代码吗..并帮助我
excel.Workbooks a=xlApp.Workbooks;xlWorkBook=a.打开(“E:\\try\\CL.xlsx”,0,false,5,“,”,false,Microsoft.Office.Interop.Excel.XlPlatform.xlWindows,“\t”,true,false,0,true,1,0);
然后添加了releaseObject(a),但它仍然不起作用