你要准备的:

1.引入的依赖

2.你要对应字段的实体类

3. 调用工具类

1.首先要引入的依赖:

        <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel-core</artifactId><version>3.1.0</version><scope>compile</scope></dependency><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.0</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version></dependency>

2.映射的实体类(举例)

import cn.hutool.core.date.DatePattern;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;/*** 团队组建** @date 2022-11-09 10:39:04*/
@NoArgsConstructor
@AllArgsConstructor
@Data
public class RiskModel implements Serializable {/*** id*/@ExcelProperty(value = "编号", index = 1)private String id;/*** 名称*/@ExcelProperty(value = "名称", index = 2)private String name;/*** 来源*/@ExcelProperty(value = "来源", index = 3)private String origin;/*** 概率*/@ExcelProperty(value = "概率(P)", index = 4)private String probability;/*** 影响*/@ExcelProperty(value = "影响(I)", index = 5)private String effect;}

3. Utils工具类:

package com.dict.utils;import cn.hutool.core.collection.CollUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.enums.WriteDirectionEnum;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.fill.FillConfig;
import com.alibaba.excel.write.metadata.fill.FillWrapper;
import com.dict.ExceptionHandler.BusException;
import com.dict.ExceptionHandler.BusMsgEnum;
import com.dict.config.AutoColumnWidthWriteHandler;
import com.dict.config.ModelExcelListener;
import com.dict.config.XHorizontalCellStyleStrategy;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.Charsets;
import org.apache.poi.ss.formula.functions.T;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.springframework.web.multipart.MultipartFile;import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;/*** @date 2022-11-7*/
@Slf4j
public class FileUtil {/*** 导入文件解析数据* @param file 需要导入的文件* @param <T>* @param type 文件类型* @param rowNumber   从第几行开始解析* @return 返回解析后的实体类对象集合*/public static <T> List<T> importExcel(MultipartFile file,Class<T> c,String type,int rowNumber) {if (file.isEmpty()) {log.error(type+BusMsgEnum.FILE_TEMPLATE_DOES_NOT_EXIST.getMsg());throw new RuntimeException(type+BusMsgEnum.FILE_TEMPLATE_DOES_NOT_EXIST.getMsg());}List<T> list;try {list = EasyExcel.read(file.getInputStream(), c, new ModelExcelListener()).sheet().headRowNumber(rowNumber).doReadSync();} catch (Exception e) {log.error(type+BusMsgEnum.TEMPLATE_EXPORT_EXCEPTION.getMsg(),e);throw new RuntimeException(type+BusMsgEnum.TEMPLATE_EXPORT_EXCEPTION.getMsg());}if (CollUtil.isEmpty(list)) {throw new RuntimeException(type + "导入的数据是空的!");}return list;}/*** 数据导出到excel,excel是通过流自动生成的* @param list  导出的数据* @param sheetName  sheet名* @param clas  excelModel类*/public static <T> void exportData(List<T> list,String type , String sheetName, HttpServletResponse response, Class clas) {try ( OutputStream outputStream = response.getOutputStream();){response.setContentType("application/vnd.ms-excel");response.setHeader("content-Disposition", "attachment;filename=" + URLEncoder.encode(sheetName+".xls", "utf-8"));response.setHeader("Access-Control-Expose-Headers", "content-Disposition");ExcelWriter writer = EasyExcel.write(outputStream).build();//WriteSheet sheet = EasyExcel.writerSheet(0, "sheet").head(clas).build();EasyExcel.write(outputStream).head(clas).excelType(ExcelTypeEnum.XLSX).sheet("sheet1").registerWriteHandler(new AutoColumnWidthWriteHandler()).registerWriteHandler(new XHorizontalCellStyleStrategy()).doWrite(list);//writer.write(list, sheet);writer.finish();}catch (FileNotFoundException e){log.error(type+BusMsgEnum.FILE_TEMPLATE_DOES_NOT_EXIST.getMsg(),e);throw new RuntimeException(type+BusMsgEnum.FILE_TEMPLATE_DOES_NOT_EXIST.getMsg());}catch (IOException e){log.error(type+BusMsgEnum.TEMPLATE_EXPORT_EXCEPTION.getMsg(),e);throw new RuntimeException(type+BusMsgEnum.TEMPLATE_EXPORT_EXCEPTION.getMsg());}}/*** excel导出数据,导出到固定模板里面* @param liste* @param templateUrl* @param response* @param fileName*/public static void exportData(List<T> liste,String type,Map<String,String> map, String templateUrl, HttpServletResponse response, String fileName) {//这里是按照哪种格式响应给浏览器  这里是按照xlsx的格式response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");response.setContentType("application/vnd.ms-excel");//响应给浏览器的文本格式response.setCharacterEncoding(Charsets.UTF_8.name());try (OutputStream outputStream = response.getOutputStream();){ExcelWriter excelWriter = EasyExcel.write(outputStream).withTemplate(templateUrl).build();WriteSheet writeSheet = EasyExcel.writerSheet(0,"第一个").build();FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.VERTICAL).forceNewRow(Boolean.TRUE).build();excelWriter.fill(new FillWrapper("list", liste), fillConfig, writeSheet);excelWriter.fill(map, writeSheet);excelWriter.finish();}catch (FileNotFoundException e){log.error(type+BusMsgEnum.FILE_TEMPLATE_DOES_NOT_EXIST.getMsg(),e);throw new RuntimeException(type+BusMsgEnum.FILE_TEMPLATE_DOES_NOT_EXIST.getMsg());}catch (IOException e){log.error(type+BusMsgEnum.TEMPLATE_EXPORT_EXCEPTION.getMsg(),e);throw new RuntimeException(type+BusMsgEnum.TEMPLATE_EXPORT_EXCEPTION.getMsg());}}/*** 模板excel导出不带参数* @param excelResource 模板路径* @param downloadFileName 文件导出名* @return 返回解析后的实体类对象集合*/public static void downloadTemplate(HttpServletResponse response,String excelResource,String downloadFileName,String type){try (FileInputStream fis = new FileInputStream(excelResource);OutputStream outputStream=response.getOutputStream();){Workbook workbook = new XSSFWorkbook(fis);response.setContentType("application/vnd.ms-excel");response.setHeader("content-Disposition", "attachment;filename=" + URLEncoder.encode(downloadFileName, "utf-8"));response.setHeader("Access-Control-Expose-Headers", "content-Disposition");workbook.write(outputStream);outputStream.flush();}catch (FileNotFoundException e){log.error(type+BusMsgEnum.FILE_TEMPLATE_DOES_NOT_EXIST.getMsg(),e);throw new RuntimeException(type+BusMsgEnum.FILE_TEMPLATE_DOES_NOT_EXIST.getMsg());}catch (IOException e){log.error(type+BusMsgEnum.TEMPLATE_EXPORT_EXCEPTION.getMsg(),e);throw new RuntimeException(type+BusMsgEnum.TEMPLATE_EXPORT_EXCEPTION.getMsg());}}/*** 模板word导出,不需要带出参数* @param wordResource 模板路径* @param downloadFileName 文件导出名* @return 返回解析后的实体类对象集合*/public static void downloadWordTemplate(HttpServletResponse response,String wordResource,String downloadFileName,String type){try (FileInputStream fis = new FileInputStream(wordResource);OutputStream outputStream=response.getOutputStream();){XWPFDocument document=new XWPFDocument (fis);response.setHeader("Access-Control-Expose-Headers","Content-Disposition");response.setCharacterEncoding("UTF-8");response.setHeader("content-type", "application/octet-stream");response.setContentType("application/vnd.ms-excel;charset=utf-8");response.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(downloadFileName, "UTF-8"));document.write(outputStream);outputStream.flush();}catch (FileNotFoundException e){log.error(type+BusMsgEnum.FILE_TEMPLATE_DOES_NOT_EXIST.getMsg(),e);throw new RuntimeException(type+BusMsgEnum.FILE_TEMPLATE_DOES_NOT_EXIST.getMsg());}catch (IOException e){log.error(type+BusMsgEnum.TEMPLATE_EXPORT_EXCEPTION.getMsg(),e);throw new RuntimeException(type+BusMsgEnum.TEMPLATE_EXPORT_EXCEPTION.getMsg());}}/*** 模板word导出,需要带出参数* @param wordResource 模板路径* @param downloadFileName 文件导出名* @return 返回解析后的实体类对象集合*/public static void downloadWordTemplate(HttpServletResponse response,String type,String wordResource, String downloadFileName, Map<String,String> map, List<String[]> tableList){try {PoiWordUtils.changWord(response,wordResource,downloadFileName,map,tableList);}catch (Exception e){log.error(type+BusMsgEnum.TEMPLATE_EXPORT_EXCEPTION.getMsg(),e);throw new RuntimeException(type+BusMsgEnum.TEMPLATE_EXPORT_EXCEPTION.getMsg());}}/*** 模板ppt导出* @param wordResource 模板路径* @param downloadFileName 文件导出名* @return 返回解析后的实体类对象集合*/public static void downloadPptTemplate(HttpServletResponse response,String wordResource,String downloadFileName,String type){try (FileInputStream fis = new FileInputStream(wordResource);OutputStream outputStream=response.getOutputStream();){XMLSlideShow ppt=new XMLSlideShow(fis);response.setHeader("Access-Control-Expose-Headers","Content-Disposition");response.setCharacterEncoding("UTF-8");response.setHeader("content-type", "application/octet-stream");response.setContentType("application/vnd.ms-excel;charset=utf-8");response.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(downloadFileName, "UTF-8"));ppt.write(outputStream);outputStream.flush();}catch (FileNotFoundException e){log.error(type+BusMsgEnum.FILE_TEMPLATE_DOES_NOT_EXIST.getMsg(),e);throw new RuntimeException(type+BusMsgEnum.FILE_TEMPLATE_DOES_NOT_EXIST.getMsg());}catch (IOException e){log.error(type+BusMsgEnum.TEMPLATE_EXPORT_EXCEPTION.getMsg(),e);throw new RuntimeException(type+BusMsgEnum.TEMPLATE_EXPORT_EXCEPTION.getMsg());}}/*** 导入* @param file 需要导入的文件* @param <T>* @return 返回解析后的实体类对象集合*/public static <T> List<T> importExcelSheet(MultipartFile file,int sheet,Class<T> c){if (file == null){return null;}List<T> list = null;try {list = EasyExcel.read(file.getInputStream(),c,new ModelExcelListener()).sheet(sheet).doReadSync();}catch (NoSuchElementException e){e.printStackTrace();} catch (Exception e) {throw new BusException(BusMsgEnum.FILE_FORMAT_WRONG);}return list;}}

关于java可以解析Excel工具类(word 也可以)相关推荐

  1. java 兼容excel_Java解析Excel工具类(兼容xls和xlsx)

    依赖jar org.apache.poi poi-ooxml 4.0.1 ExcelUtils.java package javax.utils; import java.io.File; impor ...

  2. Java解析Excel工具类(兼容xls和xlsx)

    依赖jar <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml< ...

  3. Java导入导出Excel工具类ExcelUtil

    前段时间做的分布式集成平台项目中,许多模块都用到了导入导出Excel的功能,于是决定封装一个ExcelUtil类,专门用来处理Excel的导入和导出 本项目的持久化层用的是JPA(底层用hiberna ...

  4. JAVA工具类(17)--Java导入导出Excel工具类ExcelUtil

    实战 导出就是将List转化为Excel(listToExcel) 导入就是将Excel转化为List(excelToList) 导入导出中会出现各种各样的问题,比如:数据源为空.有重复行等,我自定义 ...

  5. java导出csv/excel工具类

    导出excel的方法一般来说有两种,一种是根据反射.通过反射来得到想要的数据,定义excel的表头,得到数据内容.但在很多业务场景中,excel想要展示的数据不单单是某一个类,而是根据业务需要,可能是 ...

  6. Java写一个excel工具类_Java中Excel写操作工具类--Java免费学习网

    核心提示:package com.common.excel;import com.common.excel.exception.WriteExcelException;import jxl.Workb ...

  7. 操作Excel工具类:ExcelUtils.java

    项目中,时常会需要导入导出Excel的需求,因此我专门花时间设计了工具类. 所需依赖 <!-- 处理xls或xlsx格式的Excel表格导入导出的依赖 --><dependency& ...

  8. 读写Excel工具类ExcelUtil

    突然要用到Excel的读写操作,自己写太过麻烦,在网上找了好久找到个还不错的工具类,怕自己忘掉,分享出来,也留个记录,以后可以直接拿来用. 这个工具类分三个部分: ExcelUtil.java  // ...

  9. Java导入Excel工具类使用教程

    前言: 本工具类提供了Excel导入功能,通过反射机制将Excel中数据映射到实体类中,从而获取Excel数据,工具类依赖org.apache.poi包.支持RESTful API,支持Spring ...

最新文章

  1. 全球13个DNS根+主要省份城市的DNS服务器地址
  2. 图像几何变换之透视变换
  3. ubuntu 11.10上安装osdlyrics 歌词插件
  4. 理解分布式系统中的缓存架构(上)
  5. 百练OJ:2972: 确定进制
  6. LVS(3)——针对于真实主机的增删改操作
  7. 机器学习之 weka学习(一)weka介绍,安装和配置环境变量
  8. gridview 默认编辑按钮改成图片
  9. linux函数删除某文件,Linux环境下用C++删除指定文件
  10. UNIX网络编程 第1卷 数据分享
  11. python贴吧签到-百度贴吧签到脚本
  12. 怎么调大计算机浏览器内字体,电脑网页字体大小怎么调整(电脑里点击哪个是变换字体的)...
  13. 论文中的i.e.等简写
  14. mysql batch insert_使用batch insert解决MySQL的insert吞吐量问题
  15. python实现对图片的一些简单处理
  16. Azure核心服务(VM)——>创建windows虚拟机并在此之上部署一个cms网站
  17. 基于asp.net房屋按揭贷款管理系统
  18. 微软洗牌低代码开发市场,引发软件产业生态变局
  19. 机械手定位(带角度)的思路及3点计算旋转中心
  20. 【六大设计原则-SOLID】

热门文章

  1. 分布式缓存的面试题1
  2. let‘s talk 英语情景剧 P15
  3. 我爱你用计算机二进制怎么表示,世界仅是一串二进制编码?我们是虚拟的?古人早就给出了答案...
  4. 【极客时间】《Java并发编程实战》学习笔记
  5. 目标、目的你分清了吗?
  6. 虚拟机性能测试与对比
  7. opensuse 安装ati显卡驱动
  8. 单片机测钳形电流表_指针式钳形电流表的测量原理和使用方法
  9. 虚幻4增强现实Demo
  10. LOJ #10222. 「一本通 6.5 例 4」佳佳的 Fibonacci