Excel导入导出

来源:互联网 发布:没钱出国知乎 编辑:程序博客网 时间:2024/06/06 20:27

    前言:

                 项目紧急,需求不明,开发苦不堪言。客户要求所有数据均可导入导出,开发觉不合理又无力驳回遂吐血而卒。

      内容:

        花了半天的时间,查了点数据,终于搞到了一套Excel导入导出的宝典。下面分享给大家。

         首先: 在POM中加入依赖,加入上传文件的依赖

          
<dependency><groupId>org.jplus</groupId>    <artifactId>J-Excel</artifactId>    <scope>provided</scope></dependency>
  
<dependency>    <groupId>commons-fileupload</groupId>    <artifactId>commons-fileupload</artifactId>   </dependency>
 在spring-mvc中加入配置文件

<!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 --><bean id="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><property name="defaultEncoding" value="UTF-8" /><!-- 指定所上传文件的总大小不能超过10485760000B。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 --><property name="maxUploadSize" value="10485760000"></property><property name="maxInMemorySize" value="40960"></property></bean>

        其次:实体类的修改

1、 加入类注解 @ExcelModelConfig
2、 每个属性加入注解@Lang(value=”属性对应要导出的名字”)
3、 默认情况下属性值是可以为空的,如果不允许为空,则加入不为空注解。根据不同的数据类型使用不同的注解:
日期型:@InputDateConfig(nullable=false)
字符型:@InputTextConfig(nullable=false)
数字型:@InputIntConfig(nullable=false)
4、 如果有外键关联的话,加入字典配置。
在属性上方加入注解@InputDicConfig(dicCode=”dicCode”)用于导入,@OutputDicConfig(dicCode=”dicCode”)用于导出。dicCode是自定义的,要和后面添加字典数据时的Code相一致。

        三、在web中调用Excel导入导出的方法
  1、Excel导出
  
Map<Serializable,Serializable> map=new HashMap<>();        map.put("sheetName", "testSimpleVoExport");  // sheet的名字        map.put("columns", new String[]{"id","name","class"}); //需要导出的字段        map.put("title", "学校课程");  //导出的表格标题        map.put("dataList", (Serializable) getList());  //getlist()为你要导出的数据,可替换为自己的list
dictDataMap.put("KCLX", (Serializable) ClassData);        dictDataMap.put("GSLX", (Serializable) CountryData);        ExcelUtil.exportExcel(map, dictDataMap, response); //如果有dictData则调用此方法ExcelUtil.exportExcel(map,response);  //没有dictDataMap,调用此方法。

2、Excel导入
Map<Serializable,Serializable> map=new HashMap<>();        map.put("sheetName", "sheet1"); //sheet的名称         map.put("Class", StudentModel.class); //所操作的实体类//将查询出来的外键关联值循环放入map中,如果没有则略过红色部分。
 dictDataMap.put("KCLX", (Serializable) ClassData);        dictDataMap.put("GSLX", (Serializable) CountryData);       List<StudentModel> importList=ExcelUtil.importExcel(map, dictDataMap, request,response); //如果有dictDataMap则调用此方法List<StudentModel> importList=ExcelUtil.importExcel(map,request,response); //如果没有dictDataMap则调用此方法if(importList!=null){    System.out.println(importList.size());//调用模块相应的处理方法。(此内容可修改)    }else{    System.out.println("Excel导入失败,请检查数据后,再次进行导入");//提示导入失败(此内容可修改) }

其中如果importList返回的值为null,说明Excel中的数据有错误,错误数据会在原来的Excel数据基础上标红,并导出。请修改数据后再次进行导入操作。如果importList的返回值不为null,则表示Excel中的数据没有问题。





 
        
原创粉丝点击