当我们尝试关闭excel对象时,它无法接近群集环境。在QA和UAT环境中也一样。
public bool KillExcelProcess()
{
try
{
object misValue = System.Reflection.Missing.Value;
wbObj.Save();
wbObj.Close(true, misValue, misValue);
appC.Workbooks.Close();
appC.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(objSheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(wbObj);
System.Runtime.InteropServices.Marshal.ReleaseComObject(appC);
wbObj = null;
appC = null;
}
catch (Exception ex)
{
//throw ex;
}
finally
{
System.Threading.Thread.Sleep(5000);
GC.Collect();
}
return true;
调用功能
#endregion
try
{
log.Info("CloseExcelService (MeasureSavingsComputeBO) Starts ...");
exConverter.KillExcelProcess();
while (true)
{
try
{
File.Delete(strFilename);
break;
}
catch (Exception ex)
{
}
}
答案 0 :(得分:1)
Microsoft建议不要自动执行Excel服务器端here。
您可能需要考虑第三方组件,例如SpreadsheetGear for .NET,这是100%安全的托管代码 - 没有COM Interop问题,也没有挂起的Excel实例。
您可以使用C#和VB源here查看实时ASP.NET示例并下载免费试用版here。
免责声明:我拥有SpreadsheetGear LLC