# ExcelUtil
**Repository Path**: likaixuan0/ExcelUtil
## Basic Information
- **Project Name**: ExcelUtil
- **Description**: ExcelUtil借助反射和POI对Excel读取,省略了以往读取Excel的繁琐步骤
【官方文档地址】
- **Primary Language**: Java
- **License**: GPL-2.0
- **Default Branch**: master
- **Homepage**: http://likaixuan.top/excelUtil
- **GVP Project**: No
## Statistics
- **Stars**: 402
- **Forks**: 113
- **Created**: 2018-02-06
- **Last Updated**: 2026-02-07
## Categories & Tags
**Categories**: excel-utils
**Tags**: None
## README
功能介绍
官方文档地址: https://www.free-park.top/excelUtil
ExcelUtil借助反射和POI对Excel读取,省略了以往读取Excel的繁琐步骤,调用ExcelUtil只需要1步,对,你没有看错,1步足以读取到Excel的内容.兼容03/07版Excel.
核心功能
大数据导出(低内存占用):支持百万级别数据导出,不会造成OOM内存溢出
数据脱敏:支持对姓名、手机号、身份证等敏感信息进行自动脱敏处理
水印功能:支持为导出的Excel文件添加水印,保护文档安全
兼容03/07版Excel:同时支持处理.xls和.xlsx格式的Excel文件
引入ExcelUtil
net.oschina.likaixuan
excelutil
3.2.0
3.2.0版本 最新版
快速入门:
实体类
public class PhoneModel implements Serializable{
@Excel(title = "序号")
private int num;
@Excel(title = "手机名称")
private String phoneName;
@Excel(title = "颜色")
private String color;
@Excel(title = "售价")
private double price;
@Excel(title = "零售价")
private BigDecimal salePrice;
@Excel(title = "时间")
private Date sj;
@Excel(title = "姓名", mask = SensitiveDataTypeEnum.NAME)
private String name;
@Excel(title = "手机", mask = SensitiveDataTypeEnum.PHONE)
private String phone;
@Excel(title = "身份证", mask = SensitiveDataTypeEnum.ID_CARD)
private String idCard;
}
读取 Excel
1: 一行代码读取Excel(本地文件路径,实体类)
List list = ExcelUtil.readExcel("D:/test.xlsx", PhoneModel.class);
2: 一行代码读取Excel(从MultipartFile浏览器上传的Excel文件)
@ResponseBody
public List testImport1(MultipartFile file) throws Exception{
List list = ExcelUtil.readExcel(file.getBytes(), PhoneModel.class);
return list;
}
导出Excel
1: 小数据量(2w以内,如果需要带水印大数据量的场景,建议配合异步导出数据使用)导出(带水印)
/**
* 测试Excel导出功能-适合小数据量导出(2w以内)
* 如果需要水印建议配合异步导出数据使用
* @param response HttpServletResponse对象,用于输出Excel文件
* @param num 导出的数据量
* @throws Exception 导出过程中可能出现的异常
*/
@GetMapping(value = "/exportExcelSmall")
public void exportExcelSmall(HttpServletResponse response,int num) throws Exception{
List list = new ArrayList<>();
for(int i=0;i2万)
* @param response HttpServletResponse对象,用于输出Excel文件
* @param num 导出的数据量
* @throws Exception 导出过程中可能出现的异常
*/
@GetMapping(value = "/exportExcelSmart")
public void exportExcelSmart(HttpServletResponse response,int num) throws Exception{
List list = new ArrayList<>();
//省略业务逻辑填充数据过程。。。
ExcelUtil.exportExcelSmart(response, list, PhoneModel.class, "测试Excel导出", "内部文档-注意保密-110");
}
3: 极速模式导出(适合大数据)
/**
* 测试Excel导出功能-极速模式
* 不会生成水印,低内存模式运行,可导出百万级数据
* @param response HttpServletResponse对象,用于输出Excel文件
* @param num 导出的数据量
* @throws Exception 导出过程中可能出现的异常
*/
@GetMapping(value = "/exportExcelFast")
public void exportExcelFast(HttpServletResponse response,int num) throws Exception{
List list = new ArrayList<>();
//省略业务逻辑填充数据过程。。。
ExcelUtil.exportExcelFast(response, list, PhoneModel.class, "测试Excel导出");
}
5: 一行代码导出Excel(适合导出到本地)
ExcelUtil.exportExcel("d://test.xlsx", list, PhoneModel.class);