需求:现在要使用Asp.NET MVC 做一个导出功能,一般有几十w条数据,现在要导出到excel中。
实现思路:
方案1,直接从数据库中查询出来,一次使用datatable存起来,会连接超时,或者数据少一点的话,查询不超时,但会报内存溢出。主要是之前查询的数据量不大时,这样可以直接刷到缓存,然后生成文件使用浏览器自动下载下来。
方案2,直接从数据库中查出来,使用DataReader,一条一条读取出来,在服务器硬盘上创建一个excel文件存储起来,可以成功。现在的问题是,想保存到用户的电脑目录上,想到要提供一个中转页面,给用户下载应该可以,但是这样生成的excel文件,久了就会有很多,还得想办法经常清除才行。
请教的是有没有办法可以直接点击生成,下载的(不在服务器硬盘上创建文件)?
思考的方向不错,可惜的是,没注意到这样子会有更高的风险。跟更高的连结处理。
不是没有办法,只是你得处理更多东西就是了。
其实你的问题因该只是因为大数据吧。我自已本身也是用你说的第二个方案。(只是我是直接储存为html)
一般我是系统不主动建立。会交给需要的人去建立。但客户只能下建立报表的命令而已。并不会马上建立。
我建立报表是统一用一个排程来处理。并未交给客户立即生成。客户只能下达建立的命令而已。
至于你说的暂存檔问题。由于我是采用客户自行建立的方式。所以平常就会有对应的记录。
所以我有设定一天一次去清除几天前的资料。
以上就是我目前处理的方式。