当前位置: 首页 > news >正文

网站建设视频 备份 反代可以推广的app有哪些

网站建设视频 备份 反代,可以推广的app有哪些,htm网站,南宁seo全网营销在 Spring Boot 中结合 EasyExcel 实现动态表头导出&#xff08;无实体类&#xff0c;表头和字段&#xff08;前端传表名&#xff0c;字段值动态查询&#xff0c;返回List<Map<String,Object>>&#xff09;由前端传递&#xff09;可以通过以下步骤实现。以下是完整…

在 Spring Boot 中结合 EasyExcel 实现动态表头导出(无实体类,表头和字段(前端传表名,字段值动态查询,返回List<Map<String,Object>>)由前端传递)可以通过以下步骤实现。以下是完整示例:


1. 前端请求数据结构

假设前端传递的 JSON 格式如下:

{"headers": [{"title": "姓名", "field": "name"},{"title": "年龄", "field": "age"},{"title": "城市", "field": "city"}],"data": [{"name": "张三", "age": 25, "city": "北京"},{"name": "李四", "age": 30, "city": "上海"}]
}

2. 后端 DTO 定义

定义接收参数的 DTO 类:

@Data
public class ExportRequest {private List<Header> headers;private List<Map<String, Object>> data;@Datapublic static class Header {private String title;  // 表头名称private String field;  // 数据字段名}
}

3. Controller 层接口

处理导出请求:

@RestController
public class ExportController {@Autowiredprivate ExportService exportService;@PostMapping("/export")public void exportExcel(@RequestBody ExportRequest request, HttpServletResponse response) {exportService.export(request, response);}
}

4. Service 层实现

核心导出逻辑:

@Service
public class ExportService {public void export(ExportRequest request, HttpServletResponse response) {try {// 设置响应头response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");response.setCharacterEncoding("UTF-8");String fileName = URLEncoder.encode("动态导出.xlsx", "UTF-8");response.setHeader("Content-Disposition", "attachment; filename=" + fileName);// 获取输出流OutputStream outputStream = response.getOutputStream();// 动态构建表头和数据WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").build();ExcelWriter excelWriter = EasyExcel.write(outputStream).build();// 动态添加表头WriteTable writeTable = new WriteTable();List<List<String>> head = buildHead(request.getHeaders());writeTable.setHead(head);// 动态填充数据List<List<Object>> data = buildData(request.getHeaders(), request.getData());excelWriter.write(data, writeSheet, writeTable);// 关闭流excelWriter.finish();outputStream.flush();} catch (IOException e) {throw new RuntimeException("导出失败", e);}}// 构建表头private List<List<String>> buildHead(List<ExportRequest.Header> headers) {List<List<String>> head = new ArrayList<>();for (ExportRequest.Header header : headers) {List<String> columnHead = Collections.singletonList(header.getTitle());head.add(columnHead);}return head;}// 构建数据行private List<List<Object>> buildData(List<ExportRequest.Header> headers, List<Map<String, Object>> dataList) {List<List<Object>> data = new ArrayList<>();for (Map<String, Object> rowData : dataList) {List<Object> row = new ArrayList<>();for (ExportRequest.Header header : headers) {row.add(rowData.get(header.getField()));}data.add(row);}return data;}
}

5. 关键点说明

  1. 动态表头

    • 通过 buildHead() 方法将前端传递的 headers 转换为 EasyExcel 需要的 List<List<String>> 格式。
  2. 动态数据

    • 通过 buildData() 方法,根据 headers 中定义的 field 字段顺序,从 data 中提取对应值,构建数据行。
  3. 流式导出

    • 使用 ExcelWriter 直接操作输出流,避免内存溢出(适合大数据量)。

6. 测试与验证

使用 Postman 发送请求:

  • URL: POST http://localhost:8080/export

  • Body(JSON):

    {"headers": [{"title": "姓名", "field": "name"},{"title": "年龄", "field": "age"},{"title": "城市", "field": "city"}],"data": [{"name": "张三", "age": 25, "city": "北京"},{"name": "李四", "age": 30, "city": "上海"}]
    }
    
  • 响应:浏览器自动下载 动态导出.xlsx,内容如下:

    姓名年龄城市
    张三25北京
    李四30上海

7. 扩展优化

  • 字段校验:确保前端传递的 fielddata 中存在对应值。
  • 大数据量分页:如果数据量过大,可分页查询后分批写入。
  • 自定义样式:通过 WriteHandler 动态设置单元格样式(如字体、颜色)。

通过这种方式,无需定义实体类即可实现完全动态的 Excel 导出功能,表头和字段完全由前端控制。

http://www.yayakq.cn/news/12380/

相关文章:

  • 高端网站策划公司中卫市住房建设局网站
  • 上栗网站建设哪个网站域名解析
  • 我想学做网站免费的企业网站
  • 作风建设网站首页怎么用vs做网站
  • 如何建立网站快捷方式到桌面佛山市建设局网站
  • 琼海商城网站建设微信公众平台开发源码
  • p2p网站功能嵌入式开发要学什么
  • 做建材去什么网站哪里可以学做资料员的网站
  • 网站大图怎么做更吸引客户厦门网站建设外贸
  • 网站运营与推广方案网站百度秒收
  • o2o电商网站建设制作网站需要哪些知识
  • 网站后台管理系统安装沈阳做网站找黑酷科技
  • 汉川建设局网站手游网站怎么做的
  • 域名备案掉了网站还可以用吗全国建筑工程网
  • 怎么开一家网站开发公司提供温州手机网站制作多少钱
  • 杭州品牌网站沈阳建设工程招投标网
  • 手机网站建设的公司做任务网站有哪些内容
  • 手机直播网站开发网站改版多久恢复
  • 文稿写作网站旅游网站建设模板下载
  • 评价一个网站设计的好坏企业邮箱模板
  • asp绿色简洁通用型企业网站源码wordpress必备工具
  • 贵阳网站建设培训手机网站制作流程图
  • 电子商务网站建设有管理课后答案免费的php网站模板
  • 查网站备案网站建设空间步骤详解
  • 网站做sem能够提高收录量吗淮北招聘网淮北论坛
  • 淮滨网站建设公司微网站建设流程
  • 句容市建设工程管理处网站推广app收益排行榜
  • 深圳php网站建设网址查询工具
  • 南昌教育网站建设做网站主色调选择
  • 嘉兴网站个人博客主页登录