欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  新闻

java操作excel框架(java调用数据库)

程序员文章站 2022-06-21 14:03:46
java-excel-utils是java操作 excel 导入导出的工具类,目的是简化逻辑操作、可拓展 excel 导入导出配置。功能:导入excel文件,支持配置时间、小数点类型(支持单/多she...

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

java操作excel框架(java调用数据库)

功能:

  1. 导入excel文件,支持配置时间、小数点类型(支持单/多sheet)
  2. 浏览器导出excel文件、模板文件(支持单/多sheet)
  3. 指定路径生成excel文件(支持单/多sheet)
  4. 样式自定义,行、列、某个单元格(支持单/多sheet)
  5. 固定表头(支持单/多sheet)
  6. 下拉列表值(支持单/多sheet)
  7. 合并单元格、列宽、标题(支持单/多sheet)

教程文档:
https://github.com/andyczy/czy-nexus-commons-utils/blob/master/readme-andyczy.md

一、导出配置。

设置列宽举例:

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[]{"今日交易记录","今日交易明细"}; //两个表格、可多个

方式一:导出使用函数
excelutils.exportforexcelsoptimize() 和 localexcelutils.exportforexcelsoptimize()

 //【推荐使用该方式】【建议大数据量下不要过多设置样式】
 
 excelutils excelutils = excelutils.initialization();
 // 必填项--导出数据(参数请看下面的格式)
 excelutils.setdatalists(datalists); 
 // 必填项--sheet名称(如果是多表格导出、sheetname也要是多个值!)
 excelutils.setsheetname(sheetnamelist);
 // 文件名称(可为空,默认是:sheet 第一个名称)
 excelutils.setfilename(excelname);
 
 // web项目response响应输出流:必须填 【excelutils 对象】
 excelutils.setresponse(response);
 
 // 输出本地【localexcelutils 对象】
 // excelutils.setfilepath("f://test.xlsx");
 // 每个表格的大标题(可为空)
 excelutils.setlabelname(labelname);
 // 自定义:固定表头(可为空)
 excelutils.setpanemap(setpanemap);
 // 自定义:单元格合并(可为空)
 excelutils.setregionmap(regionmap);
 
 // 自定义:对每个单元格自定义列宽(可为空)
 excelutils.setmapcolumnwidth(mapcolumnwidth);
 // 自定义:某一行样式(可为空)
 excelutils.setrowstyles(stylesrow);
 // 自定义:某一列样式(可为空)
 excelutils.setcolumnstyles(columnstyles);
 // 自定义:每一个单元格样式(可为空)
 excelutils.setstyles(styles);
 
 // 自定义:对每个单元格自定义下拉列表(可为空)
 excelutils.setdropdownmap(dropdownmap);
 // 自定义:忽略边框(可为空:默认是有边框)
 excelutils.setnotbordermap(notbordermap); 
 
 // 执行导出
 excelutils.exportforexcelsoptimize();

方式三:导出函数
excelutils.exportforexcelsnostyle() 和 localexcelutils.exportforexcelsnostyle()

无样式(行、列、单元格样式)推荐使用这个函数、样式设置过多会影响速度

导入使用函数:
excelutils.importforexceldata(……) 和 localexcelutils.importforexceldata(……)

 * 获取多单元数据 
 * 自定义:多单元从第几行开始获取数据【看本文最底下参数说明】 
 * 自定义:多单元根据那些列为空来忽略行数据【看本文最底下参数说明】

excelutils 对象与 localexcelutils 区别。

excelutils: web响应有 response
localexcelutils:本地输出没 response

test 测试【新增本地测试】

方式四:导出函数 excelutils.exportforexcel(……) 过期注解

 * 可提供模板下载 
 * 自定义下拉列表:对每个单元格自定义下拉列表 
 * 自定义列宽:对每个单元格自定义列宽 
 * 自定义样式:对每个单元格自定义样式 
 * 自定义样式:单元格自定义某一列或者某一行样式 
 * 自定义单元格合并:对每个单元格合并 
 * 自定义:每个表格的大标题 
 * 自定义:对每个单元格固定表头

二、导入配置。

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

9、导入配置:(第几行开始获取数据) 参数 indexmap

 参数说明:多单元从第几行开始获取数据,默认从第二行开始获取(可为空)
 hashmap hashmapindex = new hashmap();
 hashmapindex.put(1,3); // 第一个表格从第三行开始获取

10、导入配置:(列为空来忽略行数据) 参数 continuerowmap

 参数说明:多单元根据那些列为空来忽略行数据(可为空)
 hashmap mapcontinuerow = new hashmap();
 mapcontinuerow.put(1,new integer[]{1, 3}); // 第一个表格第1、3列为空就忽略这行数据

11、导入时间格式(默认:yyyy-mm-dd)、导入数字保留的小数点(默认:#.###### 六位)

 excelutils excelutils = excelutils.initialization();
 excelutils.setnumeralformat("#.####"); // (可为空)期望保留小数的位数(#.####)这样保留四位。
 // (可为空) (poi 只接受无中文的日期格式、如果你想转换别的格式,这个参数要和导入表中日期格式类似,如表格中为:2019年02月14日 12时12分)。
 excelutils.setdateformatstr("yyyy年mm月dd日 hh时mm分"); 
 excelutils.setexpectdateformatstr("yyyy-mm-dd hh-mm"); // (可为空、默认的值是:dateformatstr 参数值) 期望转换后的日期格式。
 // 执行导入函数 excelutils.importforexceldata()

导入获取数据:(支持多表格数据)

for(........){ // 伪代码
 string accountno = hashmaplist.get(j).get("0"); // 获取到excel表格中第一列数据
 // 多表格数据、想怎么处理怎么处理,这就是不想转成对象的原因
}

pom maven 引入依赖:(推荐使用最新版本)

com.github.andyczy

java-excel-utils

4.0