序言
EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。
一、基本读取Excel数据
1.pom.xml引入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.6</version>
</dependency>
2.创建excel表头字段对应的实体类
@Data
public class Excel {
//使用ExcelProperty注解完成实体类与Excel字段的映射
@ExcelProperty("表单名")
private String name;
@ExcelProperty("路径")
private String path;
@ExcelProperty("分类")
private String category;
@ExcelProperty("优先级别")
private String level;
@ExcelProperty("备注")
private String note;
@ExcelProperty("对接人")
private String acceptMan;
}
3.写的两种操作
指定文件路径的写,输出excel文件。
public class simpleExcel {
public static void main(String[] args) {
//接收的对象的路径,如果没有会在路径上自动创建文件
String fileName = "D:\\user\\demo.xlsx";
// 这里 需要指定写用哪个class去读,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
// 如果这里想使用03 则 传入excelType参数即可
// 参数一:写入excel文件路径
// 参数二:写入的数据类型是DemoData
// data()方法是写入的数据,结果是List<DemoData>集合
EasyExcel.write(fileName, DemoData.class).sheet("模板").doWrite(data());
}
}
}
指定输入流文件,输出流。数据都存在流中,outputStream。
//流的形式
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
EasyExcel.write(outputStream)
.head(SparesAccountExportVo.class)
.sheet("物料数据")
.doWrite(ingredientsAccountExportVoList);
InputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
使用MimeMessageHelper发送邮件,使用流输出。
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(message, true);
messageHelper.setFrom(new InternetAddress(configPo.getFromAddr(), configPo.getNickName(), "UTF-8"));
InputStream is = str2Inputstr(email.getInputStream());
messageHelper.addAttachment("数据Excel形式文件.xlsx", new ByteArrayResource(IOUtils.toByteArray(is)));