vb.net中SaveFileDialog的问题

wzhuangl 2008-04-14 05:38:46
我在一个主窗体中打开一个查询窗体,查询后导出,关了它,再打开就出错,然后我不用SaveFileDialog这个通用对话框,直接指定一个路径保存,再打开就不会出错,为什么?请各位大虾帮帮忙!~~
导出代码如下:
SaveFileDialog1.Filter = "Excel文件(*.xls)|*.xls|All Files(*.*)|*.*"
If SaveFileDialog1.ShowDialog = DialogResult.OK And SaveFileDialog1.FileName <> "" Then
Dim myexcel As Object = CreateObject("Excel.Application")
myexcel.Workbooks.Add()
Dim k As Integer
For k = 0 To DataView1.Table.Columns.Count - 1
myexcel.Cells(1, k + 1).value = DataView1.Table.Columns(k).ColumnName
Next
Me.BindingContext(DataSet21, "jbxx").Position = 0 '指向数据库的第一条记录
Dim i, j As Integer
For i = 0 To DataGrid1.VisibleRowCount - 1 'i用来控制行
For j = 0 To DataGrid1.VisibleColumnCount - 1 'j用来控制列
myexcel.Cells(i + 2, j + 1).value = DataGrid1.Item(i, j)
Next
Next
'以上七行程序是个双重循环,将表中的内容逐行到到excel第二行开始的excel表格中
myexcel.ActiveWorkbook.SaveAs(SaveFileDialog1.FileName) '将导出的数据保存到excel
MsgBox("成功导出!")
'以下两行关闭工作薄
myexcel.Workbooks.Close()
System.Runtime.InteropServices.Marshal.ReleaseComObject(myexcel.Workbooks)
'以下四行,退出excel
myexcel.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(myexcel)
myexcel = Nothing
GC.Collect()
End If
...全文
695 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
knowledge_Is_Life 2008-05-01
  • 打赏
  • 举报
回复
不明LZ在说什么
UltraBejing 2008-04-30
  • 打赏
  • 举报
回复
没遇到过这种情况.
wisdom_qiurui 2008-04-15
  • 打赏
  • 举报
回复
下面或许对你有些帮助:
进程是一个内核对象,创建一个内核对象,一般系统会对它添加引用数,只有当引用数减到0,系统才能撤销给内核对象。你的你的进程创建了一个excel进程,就会为此内核对象添加两个引用数,一个是你主进程的,另一个是excel本身,所以你可以在主进程内调用close
wzhuangl 2008-04-15
  • 打赏
  • 举报
回复
有没有代码啊,给一下代码看下,这样说我还是不明的,谢谢啦~~~
wzhuangl 2008-04-14
  • 打赏
  • 举报
回复
是还有Excel进程,但我把它结束了也不行的,还是出错,还有我也用了GC.WaitForPendingFinalizers()这句,还是不行的!!!为什么呢???
whatinrain 2008-04-14
  • 打赏
  • 举报
回复
GC.Collect() 后面再跟下面代码试试
GC.WaitForPendingFinalizers()
Plougher 2008-04-14
  • 打赏
  • 举报
回复
LZ,先看下任务管理器里还有没有Excel进程

16,717

社区成员

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

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