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


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

主题:问下服务端报表

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9876 积分:57613 威望: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


加好友 发短信 一级勋章
等级:狐仙 帖子:9876 积分:57613 威望: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编辑过]

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9876 积分:57613 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2019/11/8 10:55:00 [显示全部帖子]

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

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9876 积分:57613 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2019/11/8 11:16:00 [显示全部帖子]

直接服务器崩溃了

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9876 积分:57613 威望: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编辑过]

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9876 积分:57613 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2019/11/8 11:44:00 [显示全部帖子]

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

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9876 积分:57613 威望: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.入库单号);
        }
    }
}

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




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


加好友 发短信 一级勋章
等级:狐仙 帖子:9876 积分:57613 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2019/11/8 13:37:00 [显示全部帖子]

我用了一个第三方转换excel到网页的的dll 居然也崩溃退出了

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9876 积分:57613 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2019/11/8 14:01:00 [显示全部帖子]

经过测试,目前生成html 没有问题,没有崩溃.但是转换成html以后生成一堆文件,这个有办法不要吗? 还有生成后如何在浏览器打开这个?


我前端代码:

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.入库单号);
        }
    }
}

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9876 积分:57613 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2019/11/8 14:35:00 [显示全部帖子]

就是加了e.WriteFile(fl.Replace("xls", "html")) 直接崩溃了.
[此贴子已经被作者于2019/11/8 14:38:08编辑过]

 回到顶部
总数 17 1 2 下一页