`
kiol
  • 浏览: 42582 次
  • 来自: ...
社区版块
存档分类
最新评论

如何设计复杂统计查询的导出excel功能?

阅读更多

前提:查询是复杂耗时的比如要几分钟,但是最后结果的数据量是可控的,一般不超过几百行,也就是没必要分页.然后需要一
个导出excel的功能,当然也可以是导出其他的,道理是一样的.

疑惑:
如果每次导出时重新做查询的话,非常的耗时,感觉是一种浪费.用户已经等了几分钟得出查询结果,为什么还要再等这几分钟呢?不太友好.而且对于后台数据库也多一次负担.
如果每次都缓存下来是不是会违反web的无状态原则?呵呵,我是Web方面的新手:)

我的方案:
开始时是把结果存到session里面,如果点导出就会把最后一次查询结果从session里面取出来,然后导出.后来因为数据太大更新不到数据里面去(数据库用的是SQL Server,是遗留系统),改为存到磁盘上.
这个有个问题,就是如果同一个用户,同时执行几个查询,然后再导出,其实只能导出最后一次查询的结果.我现在想的是,给每次查询生成一个唯一ID作为导出链接的一部分,然后结果以这个唯一ID缓存到磁盘上,这样就可以处理同时打开多个查询的情况.缓存数据进行定期清理,比如每过一小时把超过一小时的缓存数据清理掉.

不知道,我这个方案有什么问题,大家都是怎么处理这种问题的?有什么更好的方案吗?

分享到:
评论
6 楼 ryuuzaki 2008-08-01  
有同事做过导出excel,但是好象据说是乱码的说,不晓得怎么解决。不知道你们有遇到过没有。
5 楼 kiol 2008-07-16  
这个是复杂的同意查询,及时一堆sum,group by还有一堆的乱七八糟判断的,所以才会慢.很可能几百万的数据,最总出几十条来.因此也不可能只记录ID的.

我也是通过修改contentType来到处excel的.我是想知道导出时,怎么避免二次查询.如果要缓存的话,怎么缓存更好?如果不缓存的话,是否可以在客户端完成导出excel的功能.
4 楼 superxielei 2008-07-16  
js生成excel据我所知有两种办法,一个就是调用ActiveX,一个是修改contentType。我一直用第二种,挺方便的。
3 楼 liuqiang 2008-07-16  
<div class='quote_title'>kiol 写道</div>
<div class='quote_div'>
<p>开始时是把结果存到session里面,如果点导出就会把最后一次查询结果从session里面取出来,然后导出.后来因为数据太大更新不到数据里面去(数据库用的是SQL Server,是遗留系统),改为存到磁盘上.<br/>这个有个问题,就是如果同一个用户,同时执行几个查询,然后再导出,其实只能导出最后一次查询的结果.我现在想的是,给每次查询生成一个唯一ID作为导出链接的一部分,然后结果以这个唯一ID缓存到磁盘上,这样就可以处理同时打开多个查询的情况.缓存数据进行定期清理,比如每过一小时把超过一小时的缓存数据清理掉.<br/><br/>不知道,我这个方案有什么问题,大家都是怎么处理这种问题的?有什么更好的方案吗?</p>
</div>
<p><br/>你的这个方案肯定不成,查询一次就缓存一次?你怎么知道查询后就一定导出?系统浪费太严重,而且实现起来也蛮麻烦!</p>
<p>这个问题很好解决呀,你不是已经把所有记录查出来放在客户端了吗?导出就在客户端做呗,用js生成excel!</p>
<p>另外几百行记录的查询和导出需要花几分钟?</p>
2 楼 RednaxelaFX 2008-07-16  
不知道这里的Excel导出是否必须是xls格式的。Excel可以打开csv格式的文件,如果csv(逗号分隔值)可以接受的话,用FasterCSV来做那个导出或许也可以?
我只是之前给同学写个小东西的时候用过这个,当时也是需要导出数据。冒昧回个帖,呵呵
1 楼 rainux 2008-07-15  
只将每次查出的数据的 ID 作为 Array 缓存到 session 里即可,需要的时候直接把这个 Array 传给 find 方法来查,速度很快。

另外,每次查询要几分钟,是否可以考虑改进数据库设计来提高查询速度。

相关推荐

    自定义自动将大量word读取统计到excel中,中间环节采用了本地数据库

    1、首先将用来统计的excel导入到本地,(左上菜单点一下指定好哪个文件就行了) 2、选上刚刚建的模板,右键创建引导逻辑,指定excel...4、本地数据库有写简单操作,如果复杂的可以导出excel(此程序需要安装4.62框架)

    Java导出Word文档的实现.docx

    在日常的开发工作中,我们时常会遇到导出Word文档报表的需求,比如公司的财务报表、医院的患者统计报表、电商平台的销售报表等等。 导出Word方式多种多样,通常有以下几种方式: 1. 使用第三方Java工具类库Hutool的...

    利用Aspose.Cells和Excel模板导出统计数据

    主要为大家详细介绍了利用Aspose.Cells和Excel模板导出复杂的统计数据,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    计算机毕业设计:Python实现的Excel数据分析师应用(源码+详细说明),保证可靠运行,附赠计算机答辩PPT模板

    该应用不仅支持Excel文件的导入和导出,还提供了数据清洗、数据转换、统计分析、图表绘制等一系列功能。用户无需编写复杂的代码,只需通过简单的操作,即可快速完成数据分析和报告生成。 我们承诺,该应用经过严格...

    Excel VBA与数据库整合应用范例精讲

    实例3-16 进行复杂条件的查询(WHERE) 实例3-17 利用合计函数进行查询(查询最大值和最小值) 实例3-18 利用合计函数进行查询(查询合计值和平均值) 实例3-19 将一个查询结果作为查询条件进行查询 实例3-20 ...

    Excel VBA与数据库整合应用范例精讲书及源代码

    实例3-16 进行复杂条件的查询(WHERE) 实例3-17 利用合计函数进行查询(查询最大值和最小值) 实例3-18 利用合计函数进行查询(查询合计值和平均值) 实例3-19 将一个查询结果作为查询条件进行查询 实例3-20 ...

    Excel在外贸会计核算中的应用【毕业设计首发】.doc

    由于会计环境比较复杂多变,许多会计核算软件 虽然都具有着各自独有的特色功能,但也正因为如此,不同的会计核算软件之间共享性 非常差,一种会计软件所核算出的数据导出后,并不能被其他会计软件所兼容,导致会 计...

    桌面数据库-x86 v2012.06.002.exe

    《桌面数据库》不是一款单纯的软件,而是一个高效的数据... 12、快捷的简易打印、表格设计打印、任意复杂报表的设计与打印、导出到Excel打印。 13、另提供摇号、个人收藏箱、批量更改文件名、文本词频统计等工具。

    桌面数据库-x86v2012.05.001标准版

    所有查询结果,均可按需再统计、汇总、打印、导出到Excel。 2、简捷易用的表格制作、打印,功能清晰,最傻瓜型操作,不会用Excel的人,也会很快上手,比Excel易用许多。可以编辑当前表数据,也可以编制任意常规...

    人力资源管理系统设计方案

    支持复杂条件的查询筛选,并可将查询结果生成Excel报表存至报表中心供领导查询或直接导出成Excel文件。 人员档案自动连接员工从进入单位到离职全过程的历史记录,包括薪资变动、部门变动、职位变动、奖惩情况、培训...

    业务设计与运行平台 软件

    1)与Excel格式兼容,支持E-data系统内数据以Excel形势导出与导入。 2)企业现有用EXCEL管理的卡片\台帐式数据,迅速转化为MIS系统 5.完全B/S应用 产品采用B/S结构,可以实现远程应用,异地办公。系统只需进行...

    桌面数据库(64位)

    《桌面数据库》不是一款单纯的... 10、快捷的简易打印、表格设计打印、任意复杂报表的设计与打印、导出到Excel打印。 其他工具: 另提供摇号、个人收藏箱、批量更改文件名、ActiveX注册器、文本词频统计等工具。

    桌面数据库-x64-v2012.07.002修订版

    《桌面数据库》不是一款单纯的... 10、快捷的简易打印、表格设计打印、任意复杂报表的设计与打印、导出到Excel打印。 其他工具: 另提供摇号、个人收藏箱、批量更改文件名、ActiveX注册器、文本词频统计等工具。

    桌面数据库-x86-v2012.07.002

    《桌面数据库》不是一款单纯的... 10、快捷的简易打印、表格设计打印、任意复杂报表的设计与打印、导出到Excel打印。 其他工具: 另提供摇号、个人收藏箱、批量更改文件名、ActiveX注册器、文本词频统计等工具。

    桌面数据库-x86-v2013.01.002

    10、快捷的简易打印、表格设计打印、任意复杂报表的设计与打印、导出到Excel打印。 其他工具: 另提供摇号、批量更改文件名、ActiveX注册器、文本词频统计、Win7功能组合、本机网络信息、SD/TF卡文件腾挪等工具...

    桌面数据库

    (32位版) 《桌面数据库》不是一... 10、快捷的简易打印、表格设计打印、任意复杂报表的设计与打印、导出到Excel打印。 其他工具: 另提供摇号、个人收藏箱、批量更改文件名、ActiveX注册器、文本词频统计等工具。

    桌面数据库-x86-v2012.07.002修订版

    《桌面数据库》不是一款单纯的... 10、快捷的简易打印、表格设计打印、任意复杂报表的设计与打印、导出到Excel打印。 其他工具: 另提供摇号、个人收藏箱、批量更改文件名、ActiveX注册器、文本词频统计等工具。

    桌面数据库-x86-v2012.09.001

    《桌面数据库》不是一款单纯的... 10、快捷的简易打印、表格设计打印、任意复杂报表的设计与打印、导出到Excel打印。 其他工具: 另提供摇号、个人收藏箱、批量更改文件名、ActiveX注册器、文本词频统计等工具。

    桌面数据库-x64-v2012.09.001

    《桌面数据库》不是一款单纯的... 10、快捷的简易打印、表格设计打印、任意复杂报表的设计与打印、导出到Excel打印。 其他工具: 另提供摇号、个人收藏箱、批量更改文件名、ActiveX注册器、文本词频统计等工具。

    桌面数据库-x86-v2012.07.001修订版

    《桌面数据库》不是一款单纯的... 10、快捷的简易打印、表格设计打印、任意复杂报表的设计与打印、导出到Excel打印。 其他工具: 另提供摇号、个人收藏箱、批量更改文件名、ActiveX注册器、文本词频统计等工具。

Global site tag (gtag.js) - Google Analytics