excel列表导出实现前端调用

excel列表导出实现前端调用:
if (downFlag === ‘export’) {
myRequest.download(this.saleCenterIctApi.report.getDeliverDetailReport, inParam);
return;
}
方法:
download(url, params, filename, callback) {
// ElementUI.Message({
// message: ‘文件传输中’
// });
params = formatParams(params);
return new Promise((resolve, reject) => {
myRequest.post(url, params,
{ download(url, params, filename, callback) {
// ElementUI.Message({
// message: ‘文件传输中’
// });
params = formatParams(params);
return new Promise((resolve, reject) => {
myRequest.post(url, params,
{
headers: {
‘Content-Type’: ‘application/json’
},
responseType: ‘blob’,
onDownloadProgress: function(progressEvent) { // 原生获取上传进度的事件
if (progressEvent.lengthComputable) {
// 属性lengthComputable主要表明总共需要完成的工作量和已经完成的工作是否可以被测量
// 如果lengthComputable为false,就获取不到progressEvent.total和progressEvent.loaded
callback(progressEvent);
}
}
}
).then((res) => {
if(!filename) {
// 不指定文件名,使用系统响应的文件名
filename = res.headers[‘content-disposition’].replace(/^.*filename=(“)?|”KaTeX parse error: Expected 'EOF', got '}' at position 69: …name); }̲ const …/g, ‘’);
filename = decodeURIComponent(filename);
}
const content = res.data;
if (content.type === ‘application/json’) {
const fileReader = new FileReader();
fileReader.onload = function() {
try {
// console.log(“this.result”, this.result);
const res = JSON.parse(this.result); // 说明是普通对象数据,后台转换失败
// console.log("res -> ", res);
if (res.ROOT.BODY.RETURN_CODE !== ‘0’) {
commonUtil.messageBox.error(‘’, res.ROOT.BODY.RETURN_CODE, res.ROOT.BODY.RETURN_MSG);
reject();
} else {
resolve();
}
} catch (err) { // 解析成对象失败,说明是正常的文件流
// console.log(“解析成对象失败”, err);
downLoadBlobFile(content, filename);
resolve();
}
};
fileReader.readAsText(content);
} else {
// console.log(“this.result”, this.result);
downLoadBlobFile(content, filename);
resolve();
}
}).catch(r => {
console.error®;
commonUtil.messageBox.error(‘’, ‘’, ‘下载失败!’);
reject();
});
});
},
后端接口实现:
@ApiOperation(value = “售前支撑125时效列表导出”, notes = “售前支撑125时效列表导出”)
@Override
public void getSupportTimeEffectList(@RequestBody InDTO inDTO, HttpServletResponse response) throws Exception {
//1.根据入参条件查询出需要导出的数据
SessionUser sessionUser = this.getSessionUser();
QuerySupportTimeEffectListIn req = Optional.ofNullable(inDTO).map(InDTO::getBody).orElse(null);
List list = statisticEntity.getSupportTimeEffectList(req, sessionUser);
//2.调用导出工具类,实现导出,这里分为两个实现;
// 2.1.1)获取导出excel的字段模板配置数据集
List excelTempList = excelReportTempMapper
.getExcelReportEntities(ExcelTempEnum.supportTimeEffectReport.toString());
if (excelTempList == null || excelTempList.size() == 0) {
throw new BusiException(“未找到报表模板配置!”);
}
// 2.1.2) 将pojo的实体映射list,转换成map存储的list
TypeReference<LinkedHashMap<String, String>> typeReference = new TypeReference<LinkedHashMap<String, String>>() {
};
List<?> mapList = Optional.ofNullable(list)
.map(l -> l.stream().map(e -> objectMapper.convertValue(e, typeReference))
.collect(Collectors.toList()))
.orElseGet(ArrayList::new);
//2.1.3) 获取导出表格名
String fileName = “售前支撑125时效查询_” + DateUtil.getDateStrYMD_(new Date());
fileName = URLEncoder.encode(fileName, “UTF8”); // 其他浏览器
//2.1.4)工具类实现导出,默认导出数据是map封装
new ExportExcelUtil(excelTempList, list, fileName, response).exportReport();

//2.2.1) 获取导出表格名
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
String filename = URLEncoder.encode(String.format("售前支撑125时效统计%s", LocalDate.now().format(formatter)), "UTF-8");
// 2.2.2) 直接用pojo作为excel封装模板进行简单映射导出
ExportExcelUtil.exportPojo("售前支撑125时效统计", filename, response, list, QuerySupportTimeEffectListOut.class, objectMapper);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值