java导出excel_导出:Java实现大批量数据导入导出(100W以上)

阅读文本大概需要3分钟。

来源:https://www.cnblogs.com/barrywxx/p/10700283.html

使用POI或JXLS导出大数据量(百万级)Excel报表常常面临两个问题:

1. 服务器内存溢出;

2. 一次从数据库查询出这么大数据,查询缓慢。

当然也可以分页查询出数据,分别生成多个Excel打包下载,但这种生成还是很缓慢。

大数据量导入请参考:Java实现大批量数据导入导出(100W以上) -(一)导入

那么如何解决呢?

我们可以借助XML格式利用模板替换,分页查询出数据从磁盘写入XML,最终会以Excel多sheet形式生成。亲测2400万行数据,生成Excel文件4.5G,总耗时1.5分钟

https://www.cnblogs.com/barrywxx/p/10700283.html 

我利用StringTemplate模板解析技术对XML模板进行填充。当然也可以使用FreeMarker, Velocity等Java模板技术实现。

首先引入StringTemplate所需Jar包:

使用技术为 stringTemplate 

pom.xml:

  1. antlr

  2. antlr

  3. 2.7.7

  4. org.antlr

  5. stringtemplate

  6. 3.2.1

首先准备导出Excel模板,然后打开-》另存为-》选择格式为XML,然后用文本打开XML,提取XML头模板(head.st可通用),数据体模板(boday.st):

head.st可通用:

  1. xml version="1.0"?>

  2. mso-application progid="Excel.Sheet"?>

  3. xmlns="urn:schemas-microsoft-com:office:spreadsheet"

  4. xmlns:o="urn:schemas-microsoft-com:office:office"

  5. xmlns:x="urn:schemas-microsoft-com:office:excel"

  6. xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"

  7. xmlns:html="http://www.w3.org/TR/REC-html40">

  8. xmlns="urn:schemas-microsoft-com:office:office">

  9. 1996-12-17T01:32:42Z

  10. 2013-08-02T09:21:24Z

  11. 11.9999

  12. xmlns="urn:schemas-microsoft-com:office:office">

  13. xmlns="urn:schemas-microsoft-com:office:excel">

  14. 4530

  15. 8505

  16. 480

  17. 120

  18. False

  19. False

  20. ss:ID="Default" ss:Name="Normal">

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值