javaweb项目使用hutool+poi导入数据补充

刚好使用Javaweb项目使用hutool+poi导入数据,百度很多方法都是maven项目导入hutool-poi、poi-ooxml的jar包就可以了,本想用Javaweb把jar包下载放到lib文件下可以用,最后报错,找解决办法找半天;

最后还是使用maven将这两个jar包导入,测试运行,可以使用;

maven项目导入jar包关联相应的jar包,不确定哪个是必须的,所以整理一下,测试jar包:

hutool-all-4.6.3.jar、poi-4.0.1.jar、poi-ooxml-4.0.1.jar

测试代码如下:

 1 import cn.hutool.poi.excel.ExcelReader;
 2 import cn.hutool.poi.excel.ExcelUtil;
 3 import org.apache.commons.lang.ArrayUtils;
 4 
 5 import java.io.File;
 6 import java.io.FileInputStream;
 7 import java.io.FileNotFoundException;
 8 import java.io.InputStream;
 9 import java.util.List;
10 import java.util.Map;
11 /*
12  * 导入
13  */
14 public class ImportExcel {
15     /**
16      * 读取excel表格内容返回List<Map>
17      * @param inputStream  excel文件流
18      * @param head         表头数组
19      * @param headerAlias  表头别名数组
20      * @return
21      */
22     public static List<Map<String,Object>> importExcel(InputStream inputStream, String[] head, String[] headerAlias){
23         ExcelReader reader = ExcelUtil.getReader(inputStream);
24         List<Object> header=reader.readRow(0);
25         //替换表头关键字
26         if(ArrayUtils.isEmpty(head)||ArrayUtils.isEmpty(headerAlias)||head.length!=headerAlias.length){
27             return null;
28         }else{
29             for(int i=0;i<head.length;i++){
30                 if(head[i].equals(header.get(i))){
31                     reader.addHeaderAlias(head[i],headerAlias[i]);
32                 }else{
33                     return null;
34                 }
35             }
36         }
37         //读取指点行开始的表数据(以下介绍的三个参数也可以使用动态传入,根据个人业务情况修改)
38         //1:表头所在行数  2:数据开始读取位置   Integer.MAX_VALUE:数据读取结束行位置   
39         List<Map<String,Object>> read = reader.read(0,1,Integer.MAX_VALUE);
40         return read;
41     }
42     /**
43      * 读取excel表格内容返回List<Bean>
44      * @param inputStream  excel文件流
45      * @param head         表头数组
46      * @param headerAlias  表头别名数组
47      * @return
48      */
49     public static <T>List<T> importExcel(InputStream inputStream, String[] head, String[] headerAlias,Class<T> bean){
50         ExcelReader reader = ExcelUtil.getReader(inputStream);
51         List<Object> header=reader.readRow(1);
52         //替换表头关键字
53         if(ArrayUtils.isEmpty(head)||ArrayUtils.isEmpty(headerAlias)||head.length!=headerAlias.length){
54             return null;
55         }else{
56             for(int i=0;i<head.length;i++){
57                 if(head[i].equals(header.get(i))){
58                     reader.addHeaderAlias(head[i],headerAlias[i]);
59                 }else{
60                     return null;
61                 }
62             }
63         }
64         //读取指点行开始的表数据(从0开始)
65         List<T> read = reader.read(1,2,bean);
66         return read;
67     }
68     
69     public static void main(String[] args) {
70         try {
71             InputStream inputStream=new FileInputStream(new File("C:\\Users\\jchw\\Desktop\\用户数据导入模板_old.xlsx"));
72             String[] excelHead={"*用户账号","*用户姓名","部门代码","*部门名称","标签代码","*标签名称"};
73             String[] excelHeadAlias={"username","realName","deptCode","deptName","labelCode","labelName"};
74             List<Map<String,Object>> result=ImportExcel.importExcel(inputStream,excelHead,excelHeadAlias);
75             System.out.println(result);
76         } catch (FileNotFoundException e) {
77             e.printStackTrace();
78         }
79     }
80 }
View Code

缺少jar包会提示poi-ooxml版本大于等于x.x;

jar包重复也会提示错误;

hutool的jar包过多也会提示错误:错误: 找不到或无法加载主类

posted @ 2020-12-15 11:13  tongCB  阅读(591)  评论(0编辑  收藏  举报