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);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现