vb.net如何关闭程序产生的excel进程
网上一些导入导出datagridview的程序测试成功,可是测试后发现一个问题,excel在进程中无法关闭,搜索了一下,网上提供了一些kill掉excel进程的代码,却发...
网上一些导入导出datagridview的程序测试成功,可是测试后发现一个问题,excel在进程中无法关闭,搜索了一下,网上提供了一些kill掉excel进程的代码,却发生了另外一个问题,把我正常的excel文档也给关掉了。
我的代码如下:
Try
Dim excel As Microsoft.Office.Interop.Excel.Application
excel = New Microsoft.Office.Interop.Excel.Application
excel.DisplayAlerts = False
excel.Workbooks.Add(True)
excel.Visible = False
For i As Integer = 0 To DGV4.Columns.Count - 1
excel.Cells(1, i + 1) = DGV4.Columns(i).HeaderText
Next
For i = 0 To DGV4.Rows.Count - 1
For j As Integer = 0 To DGV4.Columns.Count - 1
'MessageBox.Show("i=" & i & " j=" & j)
excel.Cells(i + 2, j + 1) = DGV4(j, i).Value
Next
Next
Dim pas As String
pas = MainForm.defpath & Date.Now.Year.ToString & Date.Now.Month.ToString & Date.Now.Day.ToString & Date.Now.Hour.ToString & Date.Now.Minute.ToString & Date.Now.Second.ToString & ".xls"
excel.Workbooks(1).SaveCopyAs(pas)
MessageBox.Show("产品数据导出成功:" & pas, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
请问这段该如何修改才能在导出后关掉程序产生的excel进程而不关闭原来使用中的excel文档? 展开
我的代码如下:
Try
Dim excel As Microsoft.Office.Interop.Excel.Application
excel = New Microsoft.Office.Interop.Excel.Application
excel.DisplayAlerts = False
excel.Workbooks.Add(True)
excel.Visible = False
For i As Integer = 0 To DGV4.Columns.Count - 1
excel.Cells(1, i + 1) = DGV4.Columns(i).HeaderText
Next
For i = 0 To DGV4.Rows.Count - 1
For j As Integer = 0 To DGV4.Columns.Count - 1
'MessageBox.Show("i=" & i & " j=" & j)
excel.Cells(i + 2, j + 1) = DGV4(j, i).Value
Next
Next
Dim pas As String
pas = MainForm.defpath & Date.Now.Year.ToString & Date.Now.Month.ToString & Date.Now.Day.ToString & Date.Now.Hour.ToString & Date.Now.Minute.ToString & Date.Now.Second.ToString & ".xls"
excel.Workbooks(1).SaveCopyAs(pas)
MessageBox.Show("产品数据导出成功:" & pas, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
请问这段该如何修改才能在导出后关掉程序产生的excel进程而不关闭原来使用中的excel文档? 展开
5个回答
2013-11-25
展开全部
excel.Close();
excel.Dispose();
excel.Dispose();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Quit后加上GC.Collect()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我以前碰到过。
最后加这句代码。
GC.SuppressFinalize(this);
希望能解决你的问题。
最后加这句代码。
GC.SuppressFinalize(this);
希望能解决你的问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
通常在使用完对象,应该使用以下三个步骤,这样进程就不会存在于内存中了.
excel.ActiveWorkbook.Close()
excel.Quit()
excel = Nothing
excel.ActiveWorkbook.Close()
excel.Quit()
excel = Nothing
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询