前言
很多时候面临将查出数据生成为excel文件的问题,这里提供一个简单快捷的方法(CV就能用)(本文暂时只针对前后端分离maven项目)(第一次写博客,有写的不足的地方还请大佬指教!!!)
一、前提
二、使用步骤
1.Pom文件导入
导入一些需要使用的包(poi)
代码如下(示例):
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
<version>4.1.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-web</artifactId>
<version>4.1.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-annotation</artifactId>
<version>4.1.0</version>
</dependency>
2.准备VO
Vo需要对excel表内的列进行一个对应字段映射,这里用到一个@EXCEL注解(直接放到字段上就可以)
name对应excel表内的名称,width是长度
代码如下(示例):
@Excel(name = "ID",width = 20)
private String ID ;
@Excel(name = "名称",width = 20)
private String name ;
@Excel(name = "城市",width = 20)
private String cityName ;
@Excel(name = "性质",width = 20)
private String nature ;
3.实现类
首先将你所需要导出的数据查出来,再将数据导出为excel
代码如下(示例):
List<Map<String, HospitalExcel>> list = Mapper.select(params);//这里的我查出的数据,存入一个List里面
//对查出的数据判空
if (list == null || list.isEmpty()) {
list = new ArrayList<>();
}
try {
ExportParams exportParams = new ExportParams("", "签约医院数据");//设置sheet
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, ?.class, list);//问好处填vo
String fileName = new String("Hospital".getBytes(), "UTF-8") + ".xls";//设置excel的名称后缀
response.setContentType("application/vnd.ms-excel;charset=UTF-8");//类型
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);//设置响应头
response.setCharacterEncoding("UTF-8");//格式
OutputStream os = response.getOutputStream();
workbook.write(os);//写入
os.flush();
/**flush指的刷新此输出流并强制写出所有缓冲的输出字节。 flush 的常规协定是:如果此输出流的实现已经缓冲了以前写入的任何字节,则调用此方法指示应将这些字节立即写入它们预期的目标。
如果此流的预期目标是由基础操作系统提供的一个抽象(如一个文件),则刷新此流只能保证将以前写入到流的字节传递给操作系统进行写入,但不保证能将这些字节实际写入到物理设备(如磁盘驱动器)。**/
try {
os.close();//关闭
} catch (Exception e) {
e.printStackTrace();
}
return new Result<>(ResultEnum.OK);
} catch (Exception ex) {
ex.printStackTrace();
}
总结
希望对你有帮助