前端部分代码
(特别注意):在前端其实,数据的返回合适需要是:Blob类型,代码:
responseType = 'blob';
(1):页面调用方法出:
const { dispatch, product_no } = this.props;
dispatch({
type: 'proProduct_model/exportOverd',
payload: { imp_no: product_no, status: status }
});
(2):model处理方式:
let rs = yield call(proProductApi.exportOverd, payload);
const blob = new Blob([rs.data], { type: 'application/vnd.ms-excel;charset=utf-8' })
const fileName = "商户表" + new Date().getTime() + ".xls";
if ('download' in document.createElement('a')) { // 非IE下载
const elink = document.createElement('a');
elink.download = fileName;
elink.style.display = 'none';
elink.href = URL.createObjectURL(blob);
document.body.appendChild(elink);
elink.click();
URL.revokeObjectURL(elink.href);// 释放 URL对象
document.body.removeChild(elink);
} else { // IE10+下载
navigator.msSaveBlob(blob, fileName)
}
notification.success("数据导出成功");
后台数据接口提供:
Map<String, Object> map1 = new HashMap<String, Object>();
ApiResult apiResult = new ApiResult(0, "成功", "");
// 准备的数据
map1.put("product_no",map.get("product_no"));
List list = shopProductMapper.getExport(map1);
// 导出操作
// excel标题
String[] title = { "公司名称", "工号" };
// 组建键值对
String[] keys = { "product_no", "name" };
// excel文件名
String fileName = "商品表" + System.currentTimeMillis() + ".xls";
// sheet名
String sheetName = "商品表";
// 创建HSSFWorkbook
HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook(sheetName, title, keys, list, null);
// 响应到客户端
try {
this.setResponseHeader(response, fileName);
OutputStream os = response.getOutputStream();
wb.write(os);
os.flush();
os.close();
} catch (Exception e) {
e.printStackTrace();
}