精简的 Excel 导入导出工具 java-excel-utils

Apache
Java
跨平台
2018-12-07
czydub

java-excel-utils是JAVA操作 Excel 导入导出的工具类,目的是简化逻辑操作、可拓展 Excel 导入导出配置。

使用场景:

数据导出Excel表格是系统经常基本的功能之一,而导出Excel数据又是多种多样,如:多表格数据导出、多样式导出、行列样式、固定表头、下拉列表值、合并单元格、列宽、标题等等。那一个工具类如何满足全部需求呢?是不是要写很多代码?每次需求不一样、都要修改?现在借助 java-excel-utils 这个公共类,可以实现优雅,容易的读取,兼容03,07版Excel。大家项目中直接引入maven就可以了。

一、导出配置。

设置列宽举例:

HashMap mapColumnWidth = new HashMap<>();
HashMap mapColumn = new HashMap<>();
//自定义列宽
mapColumn.put(0, 3);     //第一列、宽度为3
mapColumn.put(1, 20);    //有人会问宽度3是多宽?两个中文刚刚好,设置序号的大小  
mapColumn.put(2, 15);    //样式多调就好了,没有什么事就一下次弄好的,而且是美观上。
mapColumnWidth.put(1, mapColumn);  //第一个单元格列宽

设置表头举例:

HashMap setPaneMap = new HashMap();
setPaneMap.put(1, 3);     //第一个表格、第三行开始固定表头

设置数据举例:(假设数据)

List>   dataLists = new ArrayList<>();   //多表格数据

导出表格sheet名称:

String[] sheetNameList = new String[]{"今日交易记录","今日交易明细"};   //两个表格、可多个

导出方式一:

exportForExcel(response, dataLists,sheetNameList,setPaneMap,mapColumnWidth,.........);

导出方式二:(推荐使用3.2版本)

ExcelUtils excelUtils = ExcelUtils.setExcelUtils();
// 必填项--导出数据
excelUtils.setDataLists(dataLists);      //   参数请看下面的格式 
// 必填项--sheet名称
excelUtils.setSheetName(sheetNameList);
// 文件名称(默认是:sheet 第一个名称、可不设置)
excelUtils.setFileName(excelName);

// 输出流:response 响应(输出流:必须选一)
excelUtils.setResponse(response);
// 输出流:可直接输出本地路径(输出流:必须选一)
// excelUtils.setFilePath("F:\\test.xlsx"); 

// 每个表格的大标题(可不设置)
excelUtils.setLabelName(labelName);
// 自定义:固定表头(可不设置)
excelUtils.setPaneMap(setPaneMap);
// 自定义:单元格合并(可不设置)
excelUtils.setRegionMap(regionMap);

// 自定义:对每个单元格自定义列宽(可不设置)
excelUtils.setColumnMap(mapColumnWidth);
// 自定义:某一行样式(可不设置)
excelUtils.setRowStyles(stylesRow);
// 自定义:某一列样式(可不设置)
excelUtils.setColumnStyles(columnStyles);
// 自定义:每一个单元格样式(可不设置)
excelUtils.setStyles(styles);
        
// 自定义:对每个单元格自定义下拉列表(可不设置)
excelUtils.setDropDownMap(dropDownMap);
// 自定义:忽略边框(可为空:默认是有边框、可不设置)
excelUtils.setNotBorderMap(notBorderMap);       
    
// 执行导出
excelUtils.exportForExcelsOptimize();

二、导入配置。

有的人会问了,为什么这个导入没有转换成对象呢?我是觉得不好用,因为导入导出都是公用的,而且都是多表格,也没必要转换也有空拿到值。

第几行开始获取:可为空

HashMap hashMapIndex = new HashMap();
hashMapIndex.put(1, 3);                //多表格从第3行开始获取:默认从第二行开始获取

忽略数据:可为空

HashMap mapContinueRow = new HashMap();
mapContinueRow.put(1, new Integer[]{1, 3});  //多单元根据那些列为空来忽略行数据、第一、三列为空的话就跳过第一、三列数据

执行:

Workbook book = new HSSFWorkbook(inputStream);
List>> list = ExcelUtils.importForExcelData(book, sheetNames, hashMapIndex, mapContinueRow);

获取数据:(多表格数据)

for(........){    // 伪代码

    String accountNo = hashMapList.get(j).get("0");     //  获取到Excel表格中第一列数据

    //  多表格数据、想怎么处理怎么处理,这就是不想转成对象的原因

}

POM  Maven 引入依赖:(推荐使用3.2版本)

       com.github.andyczy

       java-excel-utils

       3.2

的码云指数为
超过 的项目
加载中

评论(12)

琛琛琛
琛琛琛
还有个就是 背景色如何设置呢
hasonger
hasonger
easy-poi比这好用多了
琛琛琛
琛琛琛
这个可以到处.xls格式吗
d
ddmao
Excel操作
czydub
czydub 软件作者

引用来自“JAVA_Alex”的评论

导出到response中,web下载下来显示文件已损坏
看看你的office版本,wps打开是没有问题
JAVA_Alex
JAVA_Alex
导出到response中,web下载下来显示文件已损坏
czydub
czydub 软件作者

引用来自“菜鸟白客”的评论

你好,我想问一下,为什么要在ExcelUtils里面定义一些参数,却需要通过再新建一个pojo来获取值呢?为什么不直接new 一个ExcelUtils,然后直接往里面set值呢?这样不是少写一个类了吗
其实、重新弄一个类,也是为了清晰、代码就没有臃肿
czydub
czydub 软件作者

引用来自“菜鸟白客”的评论

你好,我想问一下,为什么要在ExcelUtils里面定义一些参数,却需要通过再新建一个pojo来获取值呢?为什么不直接new 一个ExcelUtils,然后直接往里面set值呢?这样不是少写一个类了吗
建议不错
菜鸟白客
你好,我想问一下,为什么要在ExcelUtils里面定义一些参数,却需要通过再新建一个pojo来获取值呢?为什么不直接new 一个ExcelUtils,然后直接往里面set值呢?这样不是少写一个类了吗
czydub
czydub 软件作者
3.1 最新版本

暂无资讯

暂无问答

Java导出,下载excel

我们会经常用到文件处理!在做信息系统的时候就使用到了导出和下载文件。这里就简单贴一下代码!

2015/01/17 17:50
125
0
Java对象和Excel转换工具XXL-EXCEL

《Java对象和Excel转换工具XXL-EXCEL》 一、简介 1.1 概述 XXL-EXCEL 是一个灵活的Java对象和Excel文档相互转换的工具。 一行代码完成Java对象和Excel之间的转换。 1.2 特性 1、Excel导出:支...

2017/09/13 12:11
446
0
PageOffice V4.0 Excel常用的接口对象---Workbook类

Workbook 类代表一个Excel文档,用来动态输出数据到Excel文档并且控制其表格格式及编辑功能。Workbook 对象是PageOffice开发平台定义的Excel数据输出对象,可作为PageOfficeCtrl.SetWriter ...

2018/09/11 15:55
4
0
2013.01.25

java读取excel两种方式 poi 和 jxl 比较: 1.jxl比poi占用jvm内存小,大数据量时优先jxl 2.jxl支持png格式图片,poi对图片支持不好 3.jxl对公式支持不好,财务数据优先poi 4.poi是apache编写...

2013/01/25 14:49
17
0
Java导出Excel

一、需求介绍   当前B/S模式已成为应用开发的主流,而在开发企业办公系统的过程中,常常有客户这样子要求:把系统数据库中的数据导出到Excel,用户查看报表时直接用Excel打开。或者是:用户...

2018/05/11 14:20
9
0
【计算机英语】词汇总结

总结工作中遇到的计算机英语词汇

2014/12/01 14:56
17
0
第一章——快速入门

1 介绍 jXLS是用于生成Excel报表的小型Java类库。jXLS使用特殊标记在Excel模板中定义输出格式和数据布局。 Java有优秀的创建Excel文件的开源和社区类库。值得关注的开源类库有Apache POI和J...

2018/07/11 16:27
106
0
POI操作Excel常用方法总结 .

POI操作Excel常用方法总结 .

2015/06/30 10:39
179
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部