Foxtable(狐表)用户栏目专家坐堂 → 问下服务端报表


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

主题:问下服务端报表

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
问下服务端报表  发帖心情 Post By:2019/11/8 10:25:00 [只看该作者]

Excel报表与后台数据

如果你是一个网页设计高手,那么网页的数据展示能力是非常优秀的。

但绝大多数用户,包括我自己,都无法设计出高水准的网页,所以需要一个简单的替代工具,实现复杂数据的展示,特别是手机端的复杂数据展示。

经过综合考虑,我们选择了Excel报表来完成这项任务,但是在Foxtable 2017之前,Excel报表只能根据已经加载的数据生成,而作为服务端程序,通常是没有办法将所有数据加载的。

所以,我们对Excel报表进行了改进,使得其可以直接基于后台数据生成报表。

我首先要提醒大家一下:

服务端的动态报表功能要尽量采用Excel报表实现,不要尝试在服务端动态生成Word报表,也不要尝试将报表保存为PDF文件,这些操作的时间和资源的消耗都非常大,是Excel报表的百倍以上,不适合在服务端使用。





如果我生成的是html 这个资源耗的厉害吗?


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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2019/11/8 10:31:00 [只看该作者]

现在excel 没有 savehtm了吗?  如果只有EXCEL 报表的话,报表安全性有问题,比如被人再次编辑
[此贴子已经被作者于2019/11/8 10:34:33编辑过]

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


加好友 发短信
等级:超级版主 帖子:110579 积分:562791 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/11/8 10:48:00 [只看该作者]

一直都没有savehtm的吧

使用vba另存为HTML格式

Dim App As New MSExcel.Application
Dim Wb As MSExcel.Workbook = App.WorkBooks.Open("E:\问题\Reports\abc.xls")
Wb.SaveAs("E:\问题\abc.html",MSExcel.XlFileFormat.xlHtml)
App.Quit

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2019/11/8 10:55:00 [只看该作者]

我刚才想到这个了,在测试呢

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2019/11/8 11:16:00 [只看该作者]

直接服务器崩溃了

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


加好友 发短信
等级:超级版主 帖子:110579 积分:562791 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/11/8 11:23:00 [只看该作者]

写了什么代码?

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2019/11/8 11:32:00 [只看该作者]

生成了报表然后再用下面的代码生成了html,再下载,然后就崩溃了,另外服务器项目文件夹产生了转换以后的一堆文件.

Dim App As New MSExcel.Application
Dim Wb As MSExcel.Workbook = App.WorkBooks.Open("E:\问题\Reports\abc.xls")
Wb.SaveAs("E:\问题\abc.html",MSExcel.XlFileFormat.xlHtml)
App.Quit


不能解决EXCEL不可以编辑的问题是个大问题.为啥不能保存为pdf呢!
[此贴子已经被作者于2019/11/8 11:33:45编辑过]

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


加好友 发短信
等级:超级版主 帖子:110579 积分:562791 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/11/8 11:38:00 [只看该作者]

生成的网页像普通网页一样打开即可,下什么载!贴出自己完整代码,贴别人的代码没有任何意义

至于保存为pdf,1楼不是有详细说明了吗?


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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2019/11/8 11:44:00 [只看该作者]

我再想想,是哦 可以直接访问这个页面的
[此贴子已经被作者于2019/11/8 11:44:57编辑过]

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2019/11/8 11:54:00 [只看该作者]

Dim RKGUID As String = e.Values("RKGUID")
            Dim rkd As String = e.Values("rkd")
            If RKGUID > "" Then
                Dim Book As New XLS.Book(ProjectPath & "Attachments\入库单.xls")
                Dim fl As String = ProjectPath & "入库单" & e.Values("rkd") & ".xls"
                Book.AddDataTable("产品入库", "服务器", "Sel     ect * from 产品入库 where GUID='" & RKGUID & "'") '添加父表入库
                Book.AddDataTable("产品入库明细", "服务器", "Sel     ect * from 产品入库明细 where 入库ID='" & RKGUID & "'") '添加子表
                Book.AddRelation("产品入库", "GUID", "产品入库明细", "入库ID") '建立关联
                Book.PreBuild = True '非报表模请将PreBuild 属性设置为False
                ' e.WriteBook(Book, "入库单" & e.Values("rkd") & ".xls", False)
                Book.Build() '生成细节区
                Book.Save(fl) '保存工作簿
                Dim App As New Excel.Application
                Dim Wb As Excel.Workbook = App.Workbooks.Open(fl)
                Wb.SaveAs(fl.Replace("xls", "html"), Excel.XlFileFormat.xlHtml)
                App.Quit()



网页 js 代码


function rkPrint() {
    var row = $('#rktable').datagrid('getSelected');
    if (!row) {
        $.messager.alert("警告""请选择要打印的单据!"'warning');
    } else {
        var rowIndex = $('#rktable').datagrid('getRowIndex'row);
        if (rowIndex >= -1) {
            location = "../downExcel?RKGUID=" +  row.入库ID + "&rkd="row.入库单号;
            console.log("../downExcel?RKGUID=" +  row.入库ID + "&rkd="row.入库单号);
        }
    }
}

这个直接打开这个生成的网页应该怎么改?




 回到顶部
总数 24 1 2 3 下一页