关于asp.net中调用excel对象的问题
我的开发环境是visual studio.net 2003,office 2003
在不同的系统环境下执行代码,结果却不同,到现在也没有一个十分理想的解决办法。
问题如下:
客户端点击按钮,执行如下代码
Dim xlsApp As Microsoft.Office.Interop.Excel.Application
Dim xlsWorkBook As Microsoft.Office.Interop.Excel.Workbook
xlsApp = New Microsoft.Office.Interop.Excel.ApplicationClass
Try
xlsWorkBook = xlsApp.Workbooks.Open("c:\test.xls", 2, False)
xlsWorkBook.Worksheets(1).range(xlsWorkBook.Worksheets(1).cells(1, 1), xlsWorkBook.Worksheets(1).cells(6, 2)).merge()
xlsWorkBook.Worksheets(1).range(xlsWorkBook.Worksheets(1).cells(1, 1), xlsWorkBook.Worksheets(1).cells(6, 2)).font.size = 20
xlsWorkBook.Worksheets(1).range(xlsWorkBook.Worksheets(1).cells(1, 1), xlsWorkBook.Worksheets(1).cells(6, 2)).font.bold = True
xlsWorkBook.Worksheets(1).range(xlsWorkBook.Worksheets(1).cells(1, 1), xlsWorkBook.Worksheets(1).cells(6, 2)).FormulaR1C1 = "Test"
xlsWorkBook.SaveAs("c:\print" & Request.UserHostName() & ".xls")
xlsWorkBook.Close(False)
xlsWorkBook = Nothing
xlsApp.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsApp)
xlsApp = Nothing
GC.Collect()
Catch ex As Exception
xlsWorkBook.Close(False)
xlsWorkBook = Nothing
xlsApp.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsApp)
xlsApp = Nothing
GC.Collect()
End Try
执行后,在c:根目录下生成了一个print127.0.0.1.xls文档
win2000 professional:excel进程没有关闭;
第二次点击按钮的时候,系统新开了一个excel进程,
如此下去,excel进程会越来越多;
excel进程无法手动关闭,不允许结束进程
win2000 server :excel进程没有关闭;
第二次点击按钮的时候,系统新开了一个excel进程;
excel进程可以手动关闭
winxp professional :excel进程没有关闭;
第二次点击按钮的时候,系统没有新开一个excel进程,
而是继续使用上次没有关闭的进程;
excel进程可以手动关闭
win2003 server :excel进程没有关闭;
第二次点击按钮的时候,系统新开了一个excel进程;
excel进程可以手动关闭
以上4种情况的共同点是excel进程依然存在,但是只有2000 professional无法手动关闭,只有xp可以继续使用已经存在的excel进程
请教原因,并希望高手可以给出解决的办法。System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsApp)似乎没有太大的效果