在.net中结束Excel,Word进程
2008-04-02 17:50
441 查看
protected string createExcel()
{
string strExcelName;
string strTemplatePath;
System.Data.DataTable dt = new System.Data.DataTable();
DateTime startTime = DateTime.Now;
Excel.Application app = new ApplicationClass();
DateTime endTime = DateTime.Now;
Excel.Workbook wb;
object missing = System.Reflection.Missing.Value;
……
try
{
strTemplatePath = Server.MapPath("../Module/po002.xlt");
strExcelName = DateTime.Now.ToString("yyyyMMddHHmmss") + @".xls";
wb = app.Workbooks.Open(strTemplatePath, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
app.Visible = false;
…………
…………
Excel.Worksheet sheetTest = (Excel.Worksheet)wb.Worksheets["2"];
sheetTest.Visible = XlSheetVisibility.xlSheetHidden;
wb.SaveAs(strExcelName, missing, missing, missing, missing, missing, Excel.XlSaveAsAccessMode.xlExclusive, missing, missing, missing, missing, missing);
System.Runtime.InteropServices.Marshal.ReleaseComObject(sheetTest);
wb.Close(null, null, null);
System.Runtime.InteropServices.Marshal.ReleaseComObject(wb);
app.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
}
catch (Exception exCreateExcel)
{
throw new Exception(exCreateExcel.Message);
}
finally
{
killProcess(startTime, endTime,"Excel");
GC.Collect();
GC.WaitForPendingFinalizers();
}
return strExcelName;
}
protected void killProcess(DateTime start,DateTime end,string ProcessName)
{
Process[] myProcesses;
DateTime ProStartTime;
myProcesses = Process.GetProcessesByName(ProcessName);
//因为暂时没有想到得到Excel进程ID的方法,所以只能判断进程启动时间
foreach (Process myProcess in myProcesses)
{
ProStartTime = myProcess.StartTime;
//myProcess.Id
if (start <= ProStartTime && ProStartTime <= end)
{
myProcess.Kill();
}
}
}
请注意红色代码:)
{
string strExcelName;
string strTemplatePath;
System.Data.DataTable dt = new System.Data.DataTable();
DateTime startTime = DateTime.Now;
Excel.Application app = new ApplicationClass();
DateTime endTime = DateTime.Now;
Excel.Workbook wb;
object missing = System.Reflection.Missing.Value;
……
try
{
strTemplatePath = Server.MapPath("../Module/po002.xlt");
strExcelName = DateTime.Now.ToString("yyyyMMddHHmmss") + @".xls";
wb = app.Workbooks.Open(strTemplatePath, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
app.Visible = false;
…………
…………
Excel.Worksheet sheetTest = (Excel.Worksheet)wb.Worksheets["2"];
sheetTest.Visible = XlSheetVisibility.xlSheetHidden;
wb.SaveAs(strExcelName, missing, missing, missing, missing, missing, Excel.XlSaveAsAccessMode.xlExclusive, missing, missing, missing, missing, missing);
System.Runtime.InteropServices.Marshal.ReleaseComObject(sheetTest);
wb.Close(null, null, null);
System.Runtime.InteropServices.Marshal.ReleaseComObject(wb);
app.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
}
catch (Exception exCreateExcel)
{
throw new Exception(exCreateExcel.Message);
}
finally
{
killProcess(startTime, endTime,"Excel");
GC.Collect();
GC.WaitForPendingFinalizers();
}
return strExcelName;
}
protected void killProcess(DateTime start,DateTime end,string ProcessName)
{
Process[] myProcesses;
DateTime ProStartTime;
myProcesses = Process.GetProcessesByName(ProcessName);
//因为暂时没有想到得到Excel进程ID的方法,所以只能判断进程启动时间
foreach (Process myProcess in myProcesses)
{
ProStartTime = myProcess.StartTime;
//myProcess.Id
if (start <= ProStartTime && ProStartTime <= end)
{
myProcess.Kill();
}
}
}
请注意红色代码:)
相关文章推荐
- 在.NET中杀死Word,Excel等进程
- 关于.NET程序中使用Excel对象后,如何结束残留的Excel进程
- 在.NET中杀死Word,Excel等进程
- 在.NET中杀死Word,Excel等进程
- 在.NET中杀死Word,Excel等进程
- [导入]在.NET中杀死Word,Excel等进程
- 关于.NET程序中使用Excel对象后,如何结束残留的Excel进程。
- [导入]在.NET中杀死Word,Excel等进程
- 在.NET中杀死Word,Excel等进程
- 在.NET中杀死Word,Excel等进程
- 在.NET中杀死Word,Excel等进程
- 在.NET中杀死Word,Excel等进程[还没试过]
- 在.NET中杀死Word,Excel等进程
- 在.NET中杀死Word,Excel等进程
- 在.NET中杀死Word,Excel等进程
- 在.NET中杀死Word,Excel等进程
- .net 彻底结束excel进程
- 在.NET中杀死Word,Excel等进程
- 在.NET中杀死Word,Excel等进程
- 在.NET中杀死Word,Excel等进程