java的EasyExcel+axios导出excel
maven:<!-- easyexcel --><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.0.5</version></dependency><!-- l
·
maven:
<!-- easyexcel -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.0.5</version>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.6</version>
</dependency>
controller:
@RequestMapping(value = "retailer_export",method = RequestMethod.GET)
public Result exportRetailer( HttpServletResponse response,@RequestParam Map map) throws IOException {
// 调service
List<Retailer> retailers = retailerService.findAll(map);
List<RetailerExpolerData> retailerList = new ArrayList<>();
retailers.forEach(item->{
RetailerExpolerData retailerExpolerData = new RetailerExpolerData();
retailerExpolerData.setName(item.getName());
retailerExpolerData.setUsername(item.getUsername());
retailerExpolerData.setProvince(item.getProvince());
retailerExpolerData.setCity(item.getCity());
retailerExpolerData.setDistrict(item.getDistrict());
retailerList.add(retailerExpolerData);
});
response.setHeader("Content-disposition","attachment;filename="+ URLEncoder.encode("用户明细表.xlsx","UTF-8"));
// 将文件名设置到头信息 js中要用
response.setHeader("FileName", URLEncoder.encode("用户明细表.xlsx","UTF-8"));
// 加入头信息白名单
response.setHeader("Access-Control-Expose-Headers", "FileName");
ServletOutputStream outputStream = response.getOutputStream();
// 把IO交给EasyExcel
EasyExcel.write(outputStream, RetailerExpolerData.class)
.sheet("sheet0")
.doWrite(retailerList);
outputStream.close();
return new Result(ResultCode.SUCCESS);
}
RetailerExpolerData:
@Data
@ExcelIgnoreUnannotated // 下面字段中添加@ExcelProperty的会导出,不添加的不导出
public class RetailerExpolerData {
@ColumnWidth(50)
@ExcelProperty("用户名")
private String username;
@ExcelProperty("姓名")
private String name;
@ExcelProperty("省")
private String province;
@ExcelProperty("市")
private String city;
@ExcelProperty("区")
private String district;
}
axios请求
export function export_retailer () {
return axios({
method:'get',
url: 'retailer-service/retailer_export',
responseType: 'blob'
}).then(res => {
let data = res.data
let filename = "用户明细表.xlsx"
if(res.headers.filename){
filename = decodeURI(res.headers.filename)
}
let url = window.URL.createObjectURL(new Blob([data]))
let link = document.createElement('a')
link.style.display = 'none'
link.href = url
link.setAttribute('download',filename)
document.body.appendChild(link)
link.click()
document.body.removeChild(link) // 下载完成移除元素
window.URL.revokeObjectURL(url) // 释放掉blob对象
}).catch((error) => {})
}
vue中调用
import {export_retailer} from '../../api/retailer/retailer'
methods:{
export_ret(){
export_retailer()
},
}
更多推荐


所有评论(0)