介绍
项目中使用到了excel做导入和导出,网上查询了一些资料,没有找到一些合适的或者完成的,于是乎,利用空闲时间开发出一套完整的excel导入导出。
整个功能将会在本文发布后的八期内容里完成更新。会将导入导出的核心代码贴出来供大家参考,有些不足的地方,可供大家共同探讨优化。
因整体更新时间较长,内部部分代码比较陈旧。近期正在对内部功能代码进行优化升级。优化后的代码会以github等方式公开。
导入功能说明
目前最新的版本中导入支持以下功能:
1.可以生成自定义数据模板
2.可以生成带下拉数据格式模板(固定数据使用)
3.定义导入样式
4.自定义导入数据处理接收参数对象
5.多对象接收数据转换
6.固定数据,字典等格式数据翻译
7.参数转数据库主键翻译
8.自定义读取sheet
9.多线程读取excel数据(待实现)
10.通过注解方式自定义导入表头,表头排序
11.支持本功能导出的数据不做操作直接导入
导入操作流程
导出功能说明
1.支持导出自定义表头,表格样式
2.支持数据字典翻译
3.支持自定义数据合计计算
4.支持金额格式转换(千位分隔)
5.多线程导出(待实现)
6.支持导出复杂类型表头(目前仅支持二级合并表头)
7.支持自定义单元格合并
导出执行流程
导出即导入
导入即导入说明
导出的数据可以在不做任何修改的情况下即可导入到数据库中
工具性能测试结果展示
单sheet条数| 内存开始(GB|) |内存结束(GB)| 消耗(MB)| 时间(毫秒) |备注|
50000| |5.51 |6.26 |768 19402 |无死机|
10000| |5.48| 6.12| 655| 28905 |无死机|
5000| 5.52| |6.04| 532| 39821| 无死机|
2000| 5.38| 5.90 |491| 85137| 无死机|
1000| 5.50| 5.90| 409| 1335175| 无死机|
500| 5.64| 5.87| 235| 25652 |无死机
数据说明
以上表格数据表示使用该工具后大数据量分段写数据的性能
内存和时间的消耗均包含数据查询时间和写数据到数据库时间
数据复杂程度:中等
测试数据总条数:231064
测试结果跟使用的环境有一定关系:本人测试使用的环境是win7+8G运行,jdk1.8
使用单线程测试
后期还会优化多线程版本,敬请期待
写在最后
本文对导入和导出的整体功能做了个简单的说明,本期后的八期内容将分开对以上内容的核心代码进行分析,主要内容分布如下:
1. POI和HSSFWorkbook介绍(9.5)
2. 导入实现的基本逻辑代码分析(9.12)
3. 导入生成文件固定数据代码分析(9.19)
4.导入数据对象接收数据处理(9.26)
5.导出写数据基本逻辑代码分析(10.10)
6.导出动态处理计算和格式逻辑代码分析(10.17)
7.自定义表头方式(10.24)
8.导入导出生成文件流返回(10.31)
自本文发布日期起开始更新,每周更新一期,每周日晚更新,欢迎围观。