当前位置:编程学习 > JAVA >>

如何解决 批量导出excel 慢的问题?阻碍部署在同一weblogic下其它应用运行的问题?

近期做了一个批量导出excel的功能,采用了模板导出。
1、excel模板有7个sheet页;
2、模板141kb;
3、需要一次性导出的excel有50个(是不是有点变态 - -!)
4、生成excel的主要代码如下:

// 1-获取模板的workbook
Workbook book = Workbook.getWorkbook(is);

// 2-创建临时文件
File tempFile = File.createTempFile("temp", ".xls");

// 3-根据模板的workbook,在临时文件上创建可编辑的workbook
WritableWorkbook wWorkbook = Workbook.createWorkbook(tempFile, book);

// 4-替换模板中的变量
generateEachData(book, wWorkbook, datas);

1、3会比较慢,3特别明显的慢!而且会造成服务器下的其它应用都被阻塞!



请大神们出出注意,有什么方法能够导出这50个excel又不影响其它服务的运行!

在这先谢谢了





--------------------编程问答-------------------- --------------------编程问答-------------------- 有没有人帮忙啊。。。。。。。。。。。。


快速批量导出excel --------------------编程问答-------------------- 如果磁盘IO不考虑的话可以考虑用多线程, --------------------编程问答--------------------
引用 3 楼 u011128470 的回复:
如果磁盘IO不考虑的话可以考虑用多线程,

我们以前一个项目为了生成客户清单都是百万级别的xls或者pdf。 --------------------编程问答-------------------- 没遇到过楼主说的情况,不过肯定需要线程去解决,亲,就一个方向去百度吧 --------------------编程问答--------------------
引用 4 楼 u011128470 的回复:
Quote: 引用 3 楼 u011128470 的回复:

如果磁盘IO不考虑的话可以考虑用多线程,

我们以前一个项目为了生成客户清单都是百万级别的xls或者pdf。


怎么解决的呢?

多线程么? --------------------编程问答--------------------
引用 6 楼 songguixian113 的回复:
Quote: 引用 4 楼 u011128470 的回复:

Quote: 引用 3 楼 u011128470 的回复:

如果磁盘IO不考虑的话可以考虑用多线程,

我们以前一个项目为了生成客户清单都是百万级别的xls或者pdf。


怎么解决的呢?

多线程么?

多线程, --------------------编程问答--------------------
引用 7 楼 u011128470 的回复:
Quote: 引用 6 楼 songguixian113 的回复:

Quote: 引用 4 楼 u011128470 的回复:

Quote: 引用 3 楼 u011128470 的回复:

如果磁盘IO不考虑的话可以考虑用多线程,

我们以前一个项目为了生成客户清单都是百万级别的xls或者pdf。


怎么解决的呢?

多线程么?

多线程,



还能指导 1 2? --------------------编程问答--------------------
引用 4 楼 u011128470 的回复:
Quote: 引用 3 楼 u011128470 的回复:

如果磁盘IO不考虑的话可以考虑用多线程,

我们以前一个项目为了生成客户清单都是百万级别的xls或者pdf。


1、是文件已存在,打包导出?
2、数据报表通过excel模板生成新的excel?


请问是那种情况? --------------------编程问答--------------------
引用 8 楼 songguixian113 的回复:
Quote: 引用 7 楼 u011128470 的回复:

Quote: 引用 6 楼 songguixian113 的回复:

Quote: 引用 4 楼 u011128470 的回复:

Quote: 引用 3 楼 u011128470 的回复:

如果磁盘IO不考虑的话可以考虑用多线程,

我们以前一个项目为了生成客户清单都是百万级别的xls或者pdf。


怎么解决的呢?

多线程么?

多线程,



还能指导 1 2?

你说程序会影响同台服务器上的其他应用,我觉得也有这个可能,有可能在生成excel的时候占用的cpu过高;我们当时是将导出程序放在另外一台服务器上的,和平台程序分开切公用一个数据库,每天晚上开始导出表。 --------------------编程问答--------------------
引用 9 楼 songguixian113 的回复:
Quote: 引用 4 楼 u011128470 的回复:

Quote: 引用 3 楼 u011128470 的回复:

如果磁盘IO不考虑的话可以考虑用多线程,

我们以前一个项目为了生成客户清单都是百万级别的xls或者pdf。


1、是文件已存在,打包导出?
2、数据报表通过excel模板生成新的excel?


请问是那种情况?

模板生成, --------------------编程问答--------------------
引用 10 楼 u011128470 的回复:
Quote: 引用 8 楼 songguixian113 的回复:

Quote: 引用 7 楼 u011128470 的回复:

Quote: 引用 6 楼 songguixian113 的回复:

Quote: 引用 4 楼 u011128470 的回复:

Quote: 引用 3 楼 u011128470 的回复:

如果磁盘IO不考虑的话可以考虑用多线程,

我们以前一个项目为了生成客户清单都是百万级别的xls或者pdf。


怎么解决的呢?

多线程么?

多线程,



还能指导 1 2?

你说程序会影响同台服务器上的其他应用,我觉得也有这个可能,有可能在生成excel的时候占用的cpu过高;我们当时是将导出程序放在另外一台服务器上的,和平台程序分开切公用一个数据库,每天晚上开始导出表。


cpu和内存都监视了,没有消耗太多,余量充足,就是在createWorkbook太慢,执行了太久,还请帮忙看看。 --------------------编程问答-------------------- 楼主可否发一下批量导出excel的代码,需急用,非常感谢
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,