EasyExcel
是一款优秀的Excel导出组件,基于注解的形式导出。除了导出,还支持导入。今天我们主要聊聊它的导出。
git项目地址:https://github.com/alibaba/easyexcel
它的优秀之处在于很省内存,导出导入速度也很快。
1实现代码
首先需要引入Maven
<!--阿里的easyexcel-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.0-beta1</version>
<scope>compile</scope>
</dependency>
dto对象
字段上标有注解,用于设置Excel的表头。
导出方法封装
这里可以自定义导出文件的文件名,sheet名。我们将文件名添加时间戳后缀,然后文件名为防止中文乱码,我们将编码处理成UTF-8
的形式。
我们将方法再次封装。
public void exportExcelWeb(HttpServletResponse response, List<TeacherInfoDto> teacherInfoDtoList) {
String fileName = "Web导出测试";
String sheetName = "sheet";
EasyExcelUtils.exportExcelWeb(response, teacherInfoDtoList, TeacherInfoDto.class, fileName, sheetName);
}
设置好文件名和sheet名。
模拟数据库中查出的数据。
public List<TeacherInfoDto> listInfo() {
List<TeacherInfoDto> list = Lists.newArrayList();
TeacherInfoDto dto = new TeacherInfoDto();
dto.setId(1);
dto.setPhone("13346785433");
dto.setName("Zhouzhou");
dto.setAddress("中国 珠穆朗玛峰");
dto.setEnrolDate("2021-04-12");
dto.setDes("我饿了");
list.add(dto);
TeacherInfoDto dto2 = new TeacherInfoDto();
dto2.setId(2);
dto2.setPhone("16732678543");
dto2.setName("Lvshen");
dto2.setAddress("中国 鄱阳湖");
dto2.setEnrolDate("2021-04-18");
dto2.setDes("I can fly");
list.add(dto2);
return list;
}
我们在Controller层编写如下代码:
@RestController
@RequestMapping(value = "/excel", method = {RequestMethod.GET, RequestMethod.POST})
public class EasyExportController {
@Autowired
private ExcelService excelService;
@RequestMapping(value = "/export", method = RequestMethod.POST)
public void export(HttpServletResponse response) {
List<TeacherInfoDto> teacherInfoDtoList = excelService.listInfo();
excelService.exportExcelWeb(response, teacherInfoDtoList);
}
}
我们启动项目,在浏览器中输入地址。
导出的Excel文件如下:
这款组件导出功能非常丰富,可以实现在单元格中添加批注,设置表格背景,表格大小,单元格合并等功能。
2Excel填充功能
EasyExcel除了一般的导出,还可以按一定的模板进行填充。
我们设置如上图的模板,模板中的data1,data2就是数据对象,后面跟了具体的数据属性。
测试代码如下:
FillExcelTemplate.xlsx
就是设置的模板。执行代码我们来看看生成的Excel文件。
今天的文章就介绍这里了,如果对你有用,欢迎转发。