Foxtable(狐表)用户栏目专家坐堂 → writebook测试问题


  共有2525人关注过本帖树形打印复制链接

主题:writebook测试问题

帅哥哟,离线,有人找我吗?
hammerlucy
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:45 积分:579 威望:0 精华:0 注册:2019/3/29 13:27:00
writebook测试问题  发帖心情 Post By:2021/1/13 14:04:00 [只看该作者]

将EXCEL报表向前端输送的过程中,根据教材论,writebook最为合宜,省去了book.save的写硬盘时间及重名问题,但实际测试时,发现writebook输出报表,在前端无法弹出下载窗口。

 回到顶部
帅哥哟,离线,有人找我吗?
hammerlucy
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:45 积分:579 威望:0 精华:0 注册:2019/3/29 13:27:00
  发帖心情 Post By:2021/1/13 14:08:00 [只看该作者]

代码如下(部分交互参数可以进行替换):
'同步执行函数,用于导出下载excel文件
'必备参数1.e参数2.sql字符串
'可选参数1.下载的表名tablename
'----------通过创建查询表来生成table------------------
Dim e As RequestEventArgs = args(0)
Dim tb As new QueryBuilder
If e.Values.containskey("sql") Then  
    If e.Values.containskey("tablename") Then
        tb.TableName= e.Values("tablename")
    Else
        tb.TableName="导出数据"
    End If
    tb.ConnectionName= e.Cookies("con")
    tb.SelectString= e.Values("sql")
    tb.Build
    '----------生成EXCEL表格文件------------------
    Dim tbl As Table = Tables(tb.TableName)
    Dim hdr As Integer = tbl.HeaderRows '获得表头的层数
    Dim Book As New XLS.Book
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    tbl.CreateSheetHeader(Sheet,0,0,False) '生成表头,且为多层模式
    '填充数据
    For c As Integer = 0 To tbl.Cols.Count - 1
        For r As Integer = 0 To tbl.Rows.Count - 1
            sheet(r + hdr,c).value = tbl(r,c)
        Next
    Next
    book.PreBuild = False '非报表模请将PreBuild 属性设置为False
    e.WriteBook(book,"download.xls",False)
    'Book.Save("d:\web\file_download\" & tb.TableName & ".xls") 
    'e.WriteString("<a href='./file_download/" & tb.TableName & ".xls'" & ">下载导出文件</a>")
End If


前端测试显示效果为(preview):
0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAEAAAAg........


 回到顶部
帅哥哟,离线,有人找我吗?
hammerlucy
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:45 积分:579 威望:0 精华:0 注册:2019/3/29 13:27:00
  发帖心情 Post By:2021/1/13 14:10:00 [只看该作者]

上述代码中,采用book.save方法测试是可行的,但弊端过多

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110662 积分:563224 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/1/13 14:21:00 [只看该作者]

我使用帮助的例子测试没有问题,请上传可以测试的例子说明


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


 回到顶部
帅哥哟,离线,有人找我吗?
hammerlucy
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:45 积分:579 威望:0 精华:0 注册:2019/3/29 13:27:00
  发帖心情 Post By:2021/1/13 22:14:00 [只看该作者]

经多轮测试,只能以网址的形式请求writebook方能输出到前端,如http://127.0.0.1/excel_download?tablename=参数
现有限制:参数尽量少,避免超出url限制
而前端采用$.post("excel_downlod",{tablename:参数},function(){})这种方式,只能收到文件流(显示为一串乱码)
[此贴子已经被作者于2021/1/13 22:38:40编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
hammerlucy
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:45 积分:579 威望:0 精华:0 注册:2019/3/29 13:27:00
  发帖心情 Post By:2021/1/13 23:03:00 [只看该作者]

利用form采用post的方式提交,再用利用$('form').form()的方式则可以完美解决传参动态生成EXCEL报表的问题

 回到顶部