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 }
缺少jar包会提示poi-ooxml版本大于等于x.x;
jar包重复也会提示错误;
hutool的jar包过多也会提示错误:错误: 找不到或无法加载主类