'删除多余的sheet
For Each workSheet As Excel.Worksheet In xlsWorkBook.Worksheets
If workSheet.Name.Length > 5 Then
If workSheet.Name.Substring(0, 5) = "Sheet" Then
workSheet.Delete()
End If
End If
Next
...........
xlsWorkBook.Close()
xlsApp.Quit()
'杀死Excel进程
Try
Dim theProc As System.Diagnostics.Process
For Each theProc In System.Diagnostics.Process.GetProcessesByName("EXCEL")
If theProc.CloseMainWindow() = False Then
theProc.Kill()
End If
Next
Catch ex As Exception
Me.lbInfo.Text = ex.Message
Me.lbInfo.Visible = True
End Try
GC.Collect()
Public Function CloseExcelApp() As Boolean
'xlApp.WindowState = XlWindowState.xlMinimized
xlApp.Visble = true
Try
If Not xlApp Is Nothing And isRunningFlag = False Then
xlApp.Quit()
Marshal.ReleaseComObject(xlApp)
Dim theProc As System.Diagnostics.Process
For Each theProc In System.Diagnostics.Process.GetProcessesByName("EXCEL")
If theProc.CloseMainWindow()= False Then
theProc.Kill()
End If
Next
End If
xlApp = Nothing
Return True
Catch ex As Exception
Return False
End Try
End Function
[C#]
public bool CloseExcelApp()
{
xlApp.Visible = true; // xlApp is the excel application.
try
{
if(xlApp != null && ! isRunning ) // isRunning是判断xlApp是怎么启动的flag.
{
xlApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
//释放COM组件,其实就是将其引用计数减1
System.Diagnostics.Process theProc;
foreach( theProc in System.Diagnostics.Process.GetProcessesByName("EXCEL"))
{
//先关闭图形窗口。如果关闭失败...有的时候在状态里看不到图形窗口的excel了,
//但是在进程里仍然有EXCEL.EXE的进程存在,那么就需要杀掉它:p
if( theProc.CloseMainWindow() == false )
{
theProc.Kill();
}
}
xlApp = null;
return true;
}
}
Catch( Exception )
{
return false;
}
}