poi导出excel表格
这是我在企业开发中使用的excel 导出,原因为新的平台并没有通用的导出excle文件工具类
前端
this.form.line = this.lineIds.toString();
if (this.form.startTime === ''||this.form.startTime === null) {
this.$notify({
title: '警告',
message: '请选择开始时间',
type: 'warning'
});
return;
} else if (this.form.endTime === ''||this.form.endTime === null) {
this.$notify({
title: '警告',
message: '请选择结束时间',
type: 'warning'
});
return;
}else if (this.form.projectId === ''||this.form.projectId === null) {
this.$notify({
title: '警告',
message: '请选择项目编号',
type: 'warning'
});
return;
} else if (this.form.line === ''||this.form.line === null) {
this.$notify({
title: '警告',
message: '请选择产品线',
type: 'warning'
});
return;
}
outExsel(this.form).then(res => {
let url = window.URL.createObjectURL(res.data);
let link = document.createElement("a");
link.download = "EnergyReport.xlsx";
link.href = url;
link.click();
window.URL.revokeObjectURL(url);
});
console.info(res);
},
export const outExsel = (data) => {
return axios.request({
url: '/api/v1/EnergyReport/outExsel',
method: 'post',
data:data,
responseType: 'blob',
})
};
后端
/**
* 导出
* @param
* @return
*/
@RequestMapping(value = "/outExsel", method = RequestMethod.POST)
public void outExsel( HttpServletResponse response,@RequestBody EnergyReport energyReport) throws IOException {
energyReportService.outExsel(energyReport,response);
}
public void outExsel(EnergyReport energyReport, HttpServletResponse response) throws IOException {
List<EneryReportMongo> energy = dpHistoryDAO.getEnergy(energyReportProc);
ExcelWriter writer = null;
OutputStream outputStream = response.getOutputStream();
try {
//添加响应头信息
response.setHeader("Content-disposition", "attachment; filename=" + "EnergyReport.xlsx");
//设置类型
response.setContentType("application/msexcel;charset=UTF-8");
//设置头
response.setHeader("Pragma", "No-cache");
//设置头
response.setHeader("Cache-Control", "no-cache");
//设置日期头
response.setDateHeader("Expires", 0);
//实例化 ExcelWriter
writer = new ExcelWriter(outputStream, ExcelTypeEnum.XLSX, true);
//实例化表单
Sheet sheet = new Sheet(1, 0, EneryReportMongo.class);
sheet.setSheetName("目录1");
//输出
writer.write(energy, sheet);
writer.finish();
outputStream.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
response.getOutputStream().close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
pom.xml 使用的是阿里的easyexcel 版本1.1.2
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>1.1.2-beat1</version>
</dependency>