首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

关于VB.net关闭EXCEL进程的有关问题

2012-02-06 
关于VB.net关闭EXCEL进程的问题我有一台服务器,一台客户端PC机.开发的软件是VB.NET2003, 实现的功能是将EX

关于VB.net关闭EXCEL进程的问题
我有一台服务器,一台客户端PC机.
开发的软件是VB.NET2003, 实现的功能是将EXCEL文件用dialog下载后,关闭EXCEL进程。
用过Kill进程,也用过
  System.Runtime.InteropServices.Marshal.ReleaseComObject(mySheet)
  System.Runtime.InteropServices.Marshal.ReleaseComObject(myBook)
  System.Runtime.InteropServices.Marshal.ReleaseComObject(myExcel)
在服务器上单独运行是可以的,EXCEL进程是可以杀掉的。
但是如果在客户端PC机上用WEB方式浏览系统,文件下载后,进程还保留在SERVER上面。也就是说没有杀掉进程。
在执行For Each p In System.Diagnostics.Process.GetProcesses()的时候,会有错,错误是:
couldn't get process information from remote machine.
但是用上面ReleaseComObject的方法怎么也杀不掉呢。
想问一下,大家有啥解决办法么?谢谢!

VB.NET code
    Private Function CreateFile() As Boolean        Dim rValue As Boolean = False        Dim myExcel As New Excel.Application        Dim myBook As Excel.Workbook        Dim mySheet As Excel.Worksheet        Dim Folder as string="C:\File\"        Dim FileName as string = "A.csv"        Try            myBook = myExcel.Workbooks.Add()            mySheet = CType(myBook.Worksheets.Item(1), Excel.Worksheet)            mySheet.Activate()            mySheet.Cells(2, 1) = "Name"            mySheet.Cells(3, 1) = "Sex"            myBook.SaveAs(Folder & FileName)            myBook.Close(True)            myExcel.Quit()            myBook = Nothing            myExcel = Nothing            ProcessKill()            GC.Collect()            bReturnVal = True        Catch ex As Exception            mErrMsg = ex.Message            myBook.Close()            myExcel.Quit()            myBook = Nothing            myExcel = Nothing            ProcessKill()            rValue= False        End Try        Return rValue    End Function    Private Sub ProcessKill()        Dim p As System.Diagnostics.Process        p = New System.Diagnostics.Process        For Each p In System.Diagnostics.Process.GetProcesses()            If p.ProcessName.ToUpper() = "EXCEL" Then                p.Kill()            End If        Next    End Sub


[解决办法]
在服务器端运运kill进程要有一定的权限才行.至于excel退出,个人经验啊,我是只要用过个excel对像都要一层层退,且从里到外...麻烦啊.没asp方便了.

热点排行