Excel导入导出工具(简单、好用且轻量级的海量Excel文件导入导出解决方案.)
Excel导入导出工具(简单、好用且轻量级的海量Excel文件导入导出解决方案.)
Excel导入导出工具
项目地址:https://gitee.com/sanri/sanri-excel-poi
优点:简单的配置即可实现导出精美的 Excel 表格,可以不用配置来导入一列数据,导入 map 数据,简单配置可以导入实体数据。
解决了一些常见问题,比如
- 导入的时候空行问题
- 导入数据去前后空格
- 继承类也可以导出数据
- 完美的支持日期格式的导入导出
- 数字为浮点型的精度处理
- 完美解决导出时的中文列宽问题
- 可自定义列的顺序
- 支持 Excel 公式
发现BUG可以提Issue,可以给我发邮件,可以加我QQ,可以进9420技术群讨论.
作者QQ: 2441719087
作者邮箱: ningxiangsanri@163.com
9420 技术交流群: 645576465
作者微信:sanri1993-
如何使用
以后会上传中央仓库,引用 maven 地址为
<dependency>
<groupId>com.sanri.excel</groupId>
<artifactId>sanri-excel-poi</artifactId>
<version>1.0-RELEASE</version>
</dependency>
- 1
- 2
- 3
- 4
- 5
目前需要自己下载代码来构建,或下载已经构建好的 release 包 :
https://gitee.com/sanri/sanri-excel-poi/repository/archive/v1.0-RELEASE?format=zip
- 还需要添加第三方依赖,如果项目中已经存在依赖,请忽略。(真实项目一般都是有依赖的)
<!-- Excel poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.10-FINAL</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.10-FINAL</version>
</dependency>
<!--apache commons -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.8.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.2</version>
</dependency>
<!-- slf4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.21</version>
</dependency>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
定义实体类
@ExcelExport
@ExcelImport(startRow = 1)
@Data
public class Simple {
@ExcelColumn(value = "年龄",order = 2)
private int age;
@ExcelColumn(value = "级别",order = 1)
private Integer level;
@ExcelColumn(value = "姓名",order = 0,chineseWidth = true)
private String name;
@ExcelColumn(value = "生日",order = 3)
private Date birthday;
@ExcelColumn(value = "序号",order = 4,hidden = true)
private long id;
@ExcelColumn(value = "是否成功",order = 5)
private boolean success;
@ExcelColumn(value = "薪水",order = 6,precision = 2)
private double money;
@ExcelColumn(value = "奖金",order = 7,precision = 2)
private float comm;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
获取数据并导出
实测在 i5 3 代 cpu ,8 G 内存,导出 10 万数据,用时 5 秒
// 从数据库,redis,消息中间件...... 获取的数据
List<Simple> simpleList= simpleBeanDatas(10);
// 创建导出类
ExcelExportWriter excelExportWriter = new ExcelExportWriter(Simple.class);
// 开始导出
excelExportWriter.export(simpleList);
// 写到输出流
excelExportWriter.writeTo(new FileOutputStream("d:/test/"+System.currentTimeMillis()+".xlsx"));
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
导入一列数据
FileInputStream fileInputStream = FileUtils.openInputStream(new File("D:\\test/1567833685699.xlsx"));
// 0 代表导入第 0 列数据,1 表示从第 1 行开始
List<String> strings = ExcelImportUtil.importListData(fileInputStream, String.class, 0, 1);
- 1
- 2
- 3
导入键值对数据
FileInputStream fileInputStream = FileUtils.openInputStream(new File("D:\\test/1567833685699.xlsx"));
// 0 表示 key 的列为第 0 列;8 表示第 8 列为值列; 1 表示从第 1 行开始
Map<String, String> stringStringMap = ExcelImportUtil.importMapData(fileInputStream, String.class, 0, 8, 1);
- 1
- 2
- 3
导入实体对象数据
FileInputStream fileInputStream = FileUtils.openInputStream(new File("D:\\test/1567833427823.xlsx"));
List<Simple> simples = ExcelImportUtil.importData(fileInputStream, Simple.class);
- 1
- 2
配置你的导入导出
注解 @ExcelExport 相关配置
// Excel 导出版本,可选值 ExcelVersion.EXCEL2007,ExcelVersion.EXCEL2003
ExcelVersion version() default ExcelVersion.EXCEL2007;
// 当导出有设置标题时,设置标题行的高度
short titleRowHeight() default 40;
// 头部行的高度,即列说明行的高度
short headRowHeight() default 30;
// 每一行数据的高度
short bodyRowHeight() default 25;
// 是否自动宽度,Excel 的自动宽度对中文支持不好,我这里对中文宽度做了适应
boolean autoWidth() default true;
// 一个 sheet 页的最大数据量,设置 -1 表示不限制,2003 版本最大 60000 行;超过的行数会另起 sheet 页
int sheetMaxRow() default -1;
// 快速导出模式,使用 new SXSSFWorkbook(rowAccessWindowSize) workbook 对象
boolean fastModel() default true;
// 快速导出模式的一个设置,一般默认就行
int rowAccessWindowSize() default 1000;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
注解 @ExcelImport 相关配置
// 数据起始行,一般设置 1 就行,从 0 开始
int startRow();
// 支持导入的版本,默认都支持
ExcelVersion[] support() default {ExcelVersion.EXCEL2003,ExcelVersion.EXCEL2007};
- 1
- 2
- 3
- 4
- 5
列注解 @ExcelColumn 相关配置
// 导出的中文头部列的值,导入不用管
String value();
// 导入的顺序,默认从 0 开始,导出不用管
int order() default -1;
// 宽度,Excel 宽度单元
int width() default -1;
// 使用字符数来定义宽度,一个中文算一个字符
int charWidth() default -1;
// 使用像素值来定义宽度
int pxWidth() default -1;
// 在使用自动宽度的时候,标记当前列是中文列
boolean chineseWidth() default false;
// 导出是否隐藏当前列
boolean hidden() default false;
// 导入的时候对当前列做字符串前后空格过滤
boolean trim() default true;
// 导出的时候的单元格类型,可选值有CELL_TYPE_NUMERIC,CELL_TYPE_STRING,CELL_TYPE_BLANK,CELL_TYPE_BOOLEAN
CellType cellType() default CellType.CELL_TYPE_STRING;
// 导入、导出日期格式
String pattern() default "yyyy-MM-dd";
// 导入、导出的数字精度设置,会对浮点型做处理
int precision() default -1;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
Excel导入导出工具(简单、好用且轻量级的海量Excel文件导入导出解决方案.)的更多相关文章
- 功能齐全、效率一流的免费开源数据库导入导出工具(c#开发,支持SQL server、SQLite、ACCESS三种数据库),每月借此处理数据5G以上
软件名:DataPie 功能:支持SQL server.SQLite.ACCESS数据库的导入.导出.存储过程调用,支持EXCEL2007.EXCEL2003.ACCESS2007. CSV文件导入数 ...
- oracle数据导出工具sqluldr2
oracle数据导出工具sqluldr2可以将数据以csv.txt等格式导出,适用于大批量数据的导出,导出速度非常快.导出后可以使用oracle loader工具将数据导入.下载完sqluldr2,工 ...
- 3.数据库操作相关术语,Oracle认证,insert into,批量插入,update tablename set,delete和truncate的差别,sql文件导入
1相关术语 语句 含义 操作 DML语句 (Data Manipulation Language) 数据库操作语言 insert update delete select DDL语言 (Date ...
- 一个基于POI的通用excel导入导出工具类的简单实现及使用方法
前言: 最近PM来了一个需求,简单来说就是在录入数据时一条一条插入到系统显得非常麻烦,让我实现一个直接通过excel导入的方法一次性录入所有数据.网上关于excel导入导出的例子很多,但大多相互借鉴. ...
- 有史以来功能最全,使用最简单的excel导入/导出工具
Github地址:https://github.com/xuanbg/Utility. 还有其他一些福利,请各位园友自取. 构造方法 1.用于导出Excel文件 NpoiHelper(ExcelVer ...
- Octopus——excel导入导出工具
Octopus Octopus是一个简易的Excel导入导出工具.目前主要就两个功能: 导入:将excel中一行数据转换为指定的java对象,并通过指定的正则表达式检查合法性. 导出:按照给定的xml ...
- java简易excel导入导出工具(封装POI)
Octopus 如何导入excel 如何导出excel github项目地址 Octopus Octopus 是一个简单的java excel导入导出工具. 如何导入excel 下面是一个excel文 ...
- Java基础学习总结(49)——Excel导入导出工具类
在项目的pom文件中引入 <dependency> <groupId>net.sourceforge.jexcelapi</groupId> <artifac ...
- JXLS (Excel导入、导出工具使用)
JXLS (Excel导入.导出工具使用) 1:简介: jxls是一个简单的.轻量级的excel导出库,使用特定的标记在excel模板文件中来定义输出格式和布局.java中成熟的excel导出工具有p ...
随机推荐
- 如何看待yandex开源clickhouse这个列式文档数据库?
如何看待yandex开源clickhouse这个列式文档数据库? 大数据云计算 water 5天前 24℃ 0评论 欧阳辰<Druid实时大数据分析>作者,”互联居”作者编辑推荐1 ...
- MySQL主从延时这么长,要怎么优化?
MySQL主从复制,读写分离是互联网常见的数据库架构,该架构最令人诟病的地方就是,在数据量较大并发量较大的场景下,主从延时会比较严重. 为什么主从延时这么大? 答:MySQL使用单线程重放RelayL ...
- spring boot入门与进阶教程
SpringBoot入门.SpringBoot进阶.Spring Cloud微服务.Spring Ecosystem 微服务相关.Spring Boot 入门 IDEA 版本.Spring Boot集 ...
- 14 Scrapy中selenium的应用
在通过scrapy框架进行某些网站数据爬取的时候,往往会碰到页面动态数据加载的情况发生,如果直接使用scrapy对其url发请求,是绝对获取不到那部分动态加载出来的数据值.但是通过观察我们会发现,通过 ...
- openstack云主机冷迁移
1:开启nova计算节点之间互信 冷迁移需要nova计算节点之间使用nova用户互相免密码访问 默认nova用户禁止登陆,开启所有计算节点的nova用户登录shell. usermod -s /bin ...
- 小米Air 13.3 安装Arch Linux
0. 前言 最近新买了一台小米Air 13.3,除了但键盘手感外都比较满意.我比较喜欢折腾Linux,但又不想放弃原有的Windows 10 Home,于是在原有的windows 10基础上再安装了A ...
- cmd拷贝文件夹时,处理提示
xcopy 若目标盘上不存在此子目录,而在目标盘的结束符又不以"\"为结束,则将提示: does destination specify a file name or direct ...
- server version for the right syntax to use near 'USING BTREE 数据库文件版本不合导致的错误
MySQL 返回:#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MyS ...
- adb简介
Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信.adb 命令便于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令 ...
- VMware Tools按钮变灰色,无法安装的解决方法
参考博客: https://blog.csdn.net/weixin_30639719/article/details/94846851 https://jingyan.baidu.com/artic ...