java easyexcel导出字段可选

使用easyexcel进行导出时根据前端传入的导出字段进行自定义导出

Controller层
@PostMapping("/export") public void export(@RequestBody DemoVo demolVo,HttpServletResponse response) throws IOException { demoService.exportExcel(demoVo,response); }

ServiceImpl实现层

--下载到浏览器
@Override
public void exportExcel(DemoVo demolVo, HttpServletResponse response) throws IOException {

    //数据查询返回封装list

     ObjectMapper mapper = new ObjectMapper();
	//JAVA类转化为String类型键值对
	String json = mapper.writeValueAsString(demolVo);
	//String转化为json
	JSONObject jsonObject= JSONObject.parseObject(json);
	//获得json所有键
	Set<String> keys = jsonObject.keySet();
	//遍历获取所有值(用户传入的字段),并存入集合
	Set<String> column = new HashSet<String>();
	for (String key : keys) {
		if (jsonObject.get(key) != null){
			column.add(jsonObject.get(key).toString());
		}
	}

	String fileName="output.xlsx";
	//设置响应头,文件名和文件类型
	response.setHeader("content-disposition","attachment;filename="+ URLEncoder.encode(fileName,"utf-8"));
	response.setContentType("application/octet-stream");
	//这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
	EasyExcel.write(response.getOutputStream(), DemoVo.class)
			.includeColumnFiledNames(column).sheet("模板")
			.doWrite(list);
	//刷新输出流并关闲
	response.flushBuffer();
}


--下载到指定目录
@Override
public void exportExcel(DemoVo demolVo) throws IOException {

    //数据查询返回封装list

     ObjectMapper mapper = new ObjectMapper();
	//JAVA类转化为String类型键值对
	String json = mapper.writeValueAsString(demolVo);
	//String转化为json
	JSONObject jsonObject= JSONObject.parseObject(json);
	//获得json所有键
	Set<String> keys = jsonObject.keySet();
	//遍历获取所有值(用户传入的字段),并存入集合
	Set<String> column = new HashSet<String>();
	for (String key : keys) {
		if (jsonObject.get(key) != null){
			column.add(jsonObject.get(key).toString());
		}
	}
   //这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
	File filepath=new File("E:/excel");
	if(!filepath.exists()){
		filepath.mkdirs();
	}
	EasyExcel.write("E:\\excel\\output.xlsx", DemoVo .class)
			.includeColumnFiledNames(column).sheet("模板")
			.doWrite(list);
   }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值