以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 浏览器打开EXCEL报表,如何关闭 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=27355) |
-- 作者:blackzhu -- 发布时间:2012/12/29 13:58:00 -- 浏览器打开EXCEL报表,如何关闭 Dim FName As String = ProjectPath & "Reports\\报价表.xls" If FileSys.FileExists(FName) Then Try Dim f As New System.IO.FileStream(FName,IO.FileMode.Open,IO.FileAccess.Read,IO.FileShare.None) f.Dispose() Catch ex As Exception MessageBox.Show("报价单打开中,请先关闭!","提示!") Dim App As New MSExcel.Application Dim Book1 As MSExcel.Workbook = App.Workbooks.Open(ProjectPath & "Reports\\报价表.xls") App.Visible = True Book1.Saved=True Book1.Close() App.Quit() e.Form.Controls("WebBrowser1").AddRess = "" End Try End If Dim tmp As String = ProjectPath & "Attachments\\报价表.xls" Dim rpt As String = ProjectPath & "Reports\\报价表.xls" Dim Book As New XLS.Book(tmp) Dim dr As DataRow Dim r As Row = Tables("订单主表").Current If r IsNot Nothing Then dr = DataTables("客户档案").Find("客户编号=\'" & r("客户编号") & "\'") If dr IsNot Nothing Then Book.Marks.Add("联系人",dr("联系人")) Book.Marks.Add("联系电话",dr("联系手机")) End If End If Book.Build() Book.Save(rpt) e.Form.Controls("WebBrowser1").AddRess = rpt 我写了这个代码,但是还是提示报表打开中,如何关闭?
|
-- 作者:lin_hailun -- 发布时间:2012/12/29 14:04:00 -- 无法测试,我测试的时候,填入地址,无法直接在浏览器里显示,而是弹出一个打开保存的对话框,然后打开了excel显示。 |
-- 作者:blackzhu -- 发布时间:2012/12/29 14:09:00 -- 这个纠结的 没有办法先关闭的? |
-- 作者:lin_hailun -- 发布时间:2012/12/29 14:25:00 -- 以下是引用lin_hailun在2012-12-29 14:04:00的发言: 无法测试,我测试的时候,填入地址,无法直接在浏览器里显示,而是弹出一个打开保存的对话框,然后打开了excel显示。 http://www.foxtable.com/help/topics/1892.htm |
-- 作者:lin_hailun -- 发布时间:2012/12/29 14:26:00 -- 测试了一下,为什么不对webbrowser的Address进行一下判断? 如果符合,就定位到空的地址"",然后再指定回来。 |
-- 作者:blackzhu -- 发布时间:2012/12/29 14:42:00 -- 林 不行吧 只是清空地址 是没有用的.excel还是打开着. |
-- 作者:blackzhu -- 发布时间:2012/12/29 15:04:00 -- 终于可以了: e.Form.Controls("WebBrowser1").AddRess = "" Dim FName As String = ProjectPath & "Reports\\报价表.xls" If FileSys.FileExists(FName) Then Try Dim f As New System.IO.FileStream(FName,IO.FileMode.Open,IO.FileAccess.Read,IO.FileShare.None) f.Dispose Catch ex As Exception If MessageBox.Show("报价单打开中,请先关闭!","提示!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then Dim App As New MSExcel.Application Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(FName) App.Visible = True App.Quit Else Return End If End Try End If Dim tmp As String = ProjectPath & "Attachments\\报价表.xls" Dim rpt As String = ProjectPath & "Reports\\报价表.xls" Dim Book As New XLS.Book(tmp) Dim dr As DataRow Dim r As Row = Tables("订单主表").Current If r IsNot Nothing Then dr = DataTables("客户档案").Find("客户编号=\'" & r("客户编号") & "\'") If dr IsNot Nothing Then Book.Marks.Add("联系人",dr("联系人")) Book.Marks.Add("联系电话",dr("联系手机")) End If End If Book.Build() Book.Save(rpt) e.Form.Controls("WebBrowser1").AddRess = rpt |
-- 作者:lin_hailun -- 发布时间:2012/12/29 15:07:00 -- 以下是引用blackzhu在2012-12-29 14:42:00的发言: 林 不行吧 只是清空地址 是没有用的.excel还是打开着. 理应是没有问题的。看看你的进程里是否有多个excel进程,结束一下再试吧。 |
-- 作者:blackzhu -- 发布时间:2012/12/29 15:30:00 -- e.Form.Controls("WebBrowser1").Print() 老大的这个应该加入预览功能. |
-- 作者:sunsenfeng -- 发布时间:2012/12/30 17:24:00 -- Excel报表是不是应该先不用打开,静默报表就行了。当需要查看的时候,再打开就行 比如说 .Build() \'后台产生报表 .Save() \'保存 .Preview() \'预览 .Print() \'直接打印 甚至可以根据现有情况,在打开的情况下不能Build,可以有个 .Close()
这样能行吗?狐老大? 总之,每次打印都打开Excel,让人觉得不伦不类,主要是利用Excel似的
|