以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  webapp的excel导出问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=126940)

--  作者:wgqcool
--  发布时间:2018/11/1 12:34:00
--  webapp的excel导出问题

请教老师,按照帮助文件的代码,用weui架构做了个订单系统,里面有根据订单明细生成EXCEL报表功能,用手机浏览器打开一切都正常,但是用HBuilder封装成一个webapp后,其他功能都正常,唯有这个生成EXCEL功能无效,直接下载一个order的EXCEL文件,好像无法调用order.js一样,打开这个excel看也只是一些网页头代码,是否和帮助文件说的后台生成报表有关?求指导!


图片点击可在新窗口打开查看此主题相关图片如下:tim截图20181031183104.png
图片点击可在新窗口打开查看

--  作者:有点甜
--  发布时间:2018/11/1 13:09:00
--  

下载excel文件的代码写成比如 e.writeFile("d:\\test.xls") 看hbuilder那里能否正常下载

 

如果自己无法调试,单独做个实例发上来测试。


--  作者:wgqcool
--  发布时间:2018/11/1 15:13:00
--  
报告老师:用e.writeFile("d:\\test.xls") ,app上面还是无法正常下载!
msgbox("333")
e.writeFile("d:\\hel.xls")
弹窗是可以先出来!同样,浏览器下载Excel正常,就webapp上不行!
但是我把手机app下载的excel文件用电脑来打开,发现报错!


图片点击可在新窗口打开查看此主题相关图片如下:10.png
图片点击可在新窗口打开查看

(我电脑上是在这个路径 有css文件的!)


--  作者:有点甜
--  发布时间:2018/11/1 15:46:00
--  

我测试没问题。

 

httprequest那里直接下面代码,然后访问test.htm即可。

 

Select Case e.Path
    Case "test.htm",""
        e.writeFile("d:\\test.xls")
End Select

 

不然你单独做个实例发上来测试。


--  作者:wgqcool
--  发布时间:2018/11/1 17:04:00
--  
老师,我刚做单独实例的时候发现个问题,因为我做了个e.Cookies校验,如果没有e.Cookies信息,就回进入登录页面,本意是超过30分钟就清空e.Cookies信息。但是为什么浏览器可以下载excel,应该是浏览器可以保持cookies信息,但是webapp不能保存cookies信息!但是如果是这个原因的话,按道理我其他页面也不能访问啊,没有cookies信息,就直接回到登录页面的啊!~不明白了!上传实例,请老师指点!是不是逻辑错误了!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目4.foxdb


--  作者:有点甜
--  发布时间:2018/11/1 20:15:00
--  

这个是hbuilder的bug,下载的时候访问服务器的时候,没有带上cookie的信息。

 

1、你升级到最新hbuilder,看其是否修复了此bug。

 

2、换一种思路(安全性可能有所降低),你把userid的值放在文件后面作为参数,如果有userid的参数,你都通过一下呗。

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目4.foxdb


--  作者:wgqcool
--  发布时间:2018/11/2 12:37:00
--  
图片点击可在新窗口打开查看收到!~修改了cookie校检的逻辑,可以正常下载了!谢谢老师!还有个问题,我用e.writefile或者e.writebook在webapp上都能下载文件,但是文件名无法修改为生成的文件名(全都是order.xls),请问能否修改成希望的文件名(比如用传递过来的oid命名)?

--  作者:有点甜
--  发布时间:2018/11/2 16:07:00
--  

参考

 

        Dim fs As System.IO.FileStream = Nothing
        fs = System.IO.File.Open("d:\\test.txt", System.IO.FileMode.Open)
        Dim btFile As Byte() = New Byte(fs.Length - 1) {}
        fs.Read(btFile, 0, Convert.ToInt32(fs.Length))
        fs.Close()
       
        e.Response.Headers("Content-Disposition") = "attachment;filename=test.txt"
        \'输出文件格式
        e.Response.ContentType = "application/octet-stream"
        
        Dim output = e.response.OutputStream
        output.Write(btFile,0,btFile.Length)
        output.Close()