我已经为这个问题苦苦挣扎了几天,我已经进行了研究并应用了我在各种论坛上找到的所有建议,但我仍然无法解决它。
我的问题是使用互操作库的 excel,我有一个用作模板的 excel 文件,所以我打开它并用新名称保存在新位置。一切都很好,除了 Excel 进程在文件创建和关闭后继续运行。
这是我的代码
protected string CreateExcel(string strProjectID, string strFileMapPath)
{
string strCurrentDir = HttpContext.Current.Server.MapPath("~/Reports/Templates/");
string strFile = "Not_Created";
Application oXL;
Workbook oWB;
oXL = new Application();
oXL.Visible = false;
Workbooks wbks = oXL.Workbooks;
//opening template file
oWB = wbks.Open(strFileMapPath);
oXL.Visible = false;
oXL.UserControl = false;
strFile = strProjectID + "_" + DateTime.Now.Ticks.ToString() + ".xlsx";
//Saving file with new name
oWB.SaveAs(strCurrentDir + strFile, XlFileFormat.xlWorkbookDefault, null, null, false, false, XlSaveAsAccessMode.xlExclusive, false, false, null, null);
oWB.Close(false, strCurrentDir + strFile, Type.Missing);
wbks.Close();
oXL.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(oXL);
System.Runtime.InteropServices.Marshal.ReleaseComObject(wbks);
System.Runtime.InteropServices.Marshal.ReleaseComObject(oWB);
oWB = null;
oXL = null;
wbks = null;
GC.Collect();
return strFile;
}
如您所见,我正在关闭并释放所有对象,但应用程序并未退出。
我正在使用 IIS7 在 32 位的 Windows Server 2008(生产)和 Windows 7(开发)中进行测试。