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

bronica_chen 2010-04-24 03:09:39
我有一台服务器,一台客户端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的方法怎么也杀不掉呢。
想问一下,大家有啥解决办法么?谢谢!


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

...全文
720 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lucyxr 2012-07-09
  • 打赏
  • 举报
回复
请问楼主这个您解决了吗,我现在也遇到了与楼主同样的问题,希望能尽快回复!
anly20011 2011-12-22
  • 打赏
  • 举报
回复
看下同样的问题?
bronica_chen 2010-05-04
  • 打赏
  • 举报
回复
是权限问题。谢谢
trueideal 2010-04-24
  • 打赏
  • 举报
回复
在服务器端运运kill进程要有一定的权限才行.至于excel退出,个人经验啊,我是只要用过个excel对像都要一层层退,且从里到外...麻烦啊.没asp方便了.

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧