当前位置:编程学习 > C#/ASP.NET >>

excel不能释放!~~谁给解释一下,急急急!~~~~

 Dim v_name As String
        v_name = sPath & "\" & v_控 & ".xls"
       
        Try
            setexcelopen()'获得file_flag的程序
            If file_flag <> "" Then '由vb关闭excel()
                If Not File.Exists(v_name) Then
                    xlwbk.SaveAs(sPath & "\" & v_控机构名称(v_控num) & "原件选择" & ".xls")
                End If
                xlwbk.RunAutoMacros(Excel.XlRunAutoMacro.xlAutoClose) '执行excel关闭宏
                xlwbk.Close(True)  '关闭excel工作簿  
                xlapp.Quit() '(关闭excel)
            End If
            xlapp = Nothing         '释放excel对象
        Catch ex As Exception
            MsgBox("问题发生在保存excel过程中" & ex.Message, MsgBoxStyle.Information, "注意")
        End Try
我为什么不能释放excel那???请给予答复!~~我实在没看出我哪块不对,谢谢!~急!~ --------------------编程问答-------------------- 怎么没人给我回啊???????????大哥来个人啊 --------------------编程问答-------------------- 在调用该方法的
方法中的finilly中加GC.Collect (); --------------------编程问答-------------------- 啥东西啊!~GC.collect是什么东西,为什么加了它就能解决啊????给讲讲呗!~ --------------------编程问答--------------------
引用 2 楼 S170393163 的回复:
在调用该方法的 
方法中的finilly中加GC.Collect ();


强行销毁 --------------------编程问答-------------------- 我一般是另寫一個方法,關掉所有Excel的進程的。
Sub KillProcess(ByVal processName As string)
'dim myproc as System.Diagnostics.Process = new System.Diagnostics.Process()
Try
foreach thisproc as System.Diagnostics.Process in Process.GetProcessesByName(processName))
if(not thisproc.CloseMainWindow())
thisproc.Kill()
end for
Catch Exc as Exception 
thrown new Exception("",Exc)
End Try
End Sub
大概就是這樣子吧,沒有使用IDE,可能大小寫會有小小問題。還好VB不區分的。接收的參數就是程序名稱
--------------------编程问答-------------------- System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsFile)
GC.Collect()


//其中xlsFile是个com的Object,gc是垃圾收集器.net的内存是它进行管理的 --------------------编程问答-------------------- 哈哈,和我之前一样的问题,无法关闭Excel的进程,不过,我找到了解决的办法了!如下,希望可以解决你的问题哦。

注意下面的这句代码,我想这个就是你想要的哦:-):Marshal.ReleaseComObject(myapp)


Private Function getExcelSheetName() As String

        Dim myapp As New Excel.Application
        Dim xlsbook1 As Excel.Workbook
        Dim workSheet As Excel.Worksheet
        Dim sheetName As String

        Try
            xlsbook1 = myapp.Workbooks.Open(ExcelFilePath)
            Dim xlssheet1 As Excel.Worksheet
            workSheet = xlsbook1.Sheets.Item(1)
            sheetName = workSheet.Name

            xlsbook1.Close()
            Marshal.ReleaseComObject(myapp)
            myapp = Nothing

        Catch ex As Exception

            MessageBox.Show(ex.ToString, "Exception!", _
                                                         MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try

        Return sheetName
    End Function
--------------------编程问答-------------------- 我遇到的情况是在MDI中调用Excel,MDI退出后执行上面的清理操作,没用(进程中还有Excel),只有在主程序退出时才有效(Excel销毁)!
不知谁知道更好的方法?! --------------------编程问答--------------------
引用 8 楼 51Crack 的回复:
我遇到的情况是在MDI中调用Excel,MDI退出后执行上面的清理操作,没用(进程中还有Excel),只有在主程序退出时才有效(Excel销毁)! 
不知谁知道更好的方法?!


那还是你的Excel开启后没有Close的原因啊!
要先Close,然后再释放进程就可以了!
补充:.NET技术 ,  VB.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,