首页 > 其他分享 >EasyExcel数据导出实现、动态表头生成、SpringBoot3框架

EasyExcel数据导出实现、动态表头生成、SpringBoot3框架

时间:2024-07-30 14:52:52浏览次数:12  
标签:String 导出 EasyExcel List 表头 public SpringBoot3 new response

1、引入EasyExcel依赖
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>easyexcel</artifactId>
        <version>3.3.2</version>
    </dependency>
2、定义ExcelModel表单模型
public class ExcelModel implements Serializable {
	private String fileName;//定义导出文件名
	private String[] headMap;//定义导出导出表头
	private String[] fieldMap;//定义指导导出字段
	private List<Map<String,Object>> datalist;//表单数据
}
3、定义ExcelUtils工具类
public static void dataWrite(@RequestBody ExcelModel excelModel,HttpServletResponse response){
    response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
    response.setCharacterEncoding("utf-8");
    try {
        String fileName = URLEncoder.encode(excelModel.getFileName(),"UTF-8");
        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
        EasyExcel.write(response.getOutputStream()).head(setHead(excelModel.getHeadMap())).sheet(excelModel.getFileName()).doWrite(setData(excelModel.getDatalist(),excelModel.getFieldMap()));
        // 这里需要设置不关闭流
    } catch (Exception e) {
        response.reset();
        response.setContentType("application/json");
        response.setCharacterEncoding("utf-8");
        throw new SunException("下载失败",e);
    }
}

/**
 * 设置表格表头
 * @param headMap Stirng[] 指定需要导出的表头
 * @return
 */
public static List<List<String>> setHead(String[] headMap){
    List<List<String>> list = new ArrayList<List<String>>();
    for (String head : headMap ){
        List<String> h = new ArrayList<String>();
        h.add(head);
        list.add(h);
    }
    return list;
}

/**
 * 设置表单数据
 * @param datalist List<Map<String,Object>>格式、方便使用Map集合的数据处理
 * @param fieldMap String[] 指定需要的导出字段的数组
 * @return
 */
public static List<List<Object>> setData(List<Map<String,Object>> datalist,String[] fieldMap){
    List<List<Object>> lists = new ArrayList<List<Object>>();
    for(Map<String,Object> map : datalist){
        List<Object> list = new ArrayList<Object>();
        for (int i=0;i<fieldMap.length;i++){
            list.add(map.get(fieldMap[i]));
        }
        lists.add(list);
    }
    return lists;
}
4、接口具体实现类
public class SysLogServiceImpl extends ServiceImpl<SysLogMapper, SysLog>
implements SysLogService{

	@Override
	public List<Map<String,Object>> queryAllLog(Map<String, Object> params) {
		return baseMapper.selectMaps(new QueryWrapper<>());
	}
}
5、控制类进行具体实现
    @GetMapping("/export")
public void export(@RequestParam Map<String,Object> params){

    HttpServletResponse res = HttpContextUtils.getHttpServletResponse();
    List<Map<String,Object>> list = sysLogService.queryAllLog(params);
    ExcelModel model = new ExcelModel();
    model.setFileName("导出测试");
    String[] headMap ={"用户名","操作方式"};//自定义表头
    String[] dataMap ={"username","operation"};//自定义导出字符串
    model.setHeadMap(headMap);
    model.setFieldMap(dataMap);
    model.setDatalist(list);
    ExcelUtils.dataWrite(model,res);
}

标签:String,导出,EasyExcel,List,表头,public,SpringBoot3,new,response
From: https://www.cnblogs.com/appdesign/p/18332361

相关文章

  • 3、springboot3 vue3开发平台-后端-swagger,knife4j整合
    文章目录1.knife4j简介2.引入依赖3.简单配置4.测试1.knife4j简介Knife4j是一个集Swagger2和OpenAPI3为一体的增强解决方案帮助开发者快速聚合使用OpenAPI规范。兼容OpenAPI3,使用更简介界面较swagger好看,文档导出、测试功能更简介方便官网:https://doc.......
  • Java使用xlsx-streamer和EasyExcel解决读取超大excel文件数据处理方法
    前言最近有个项目在生产环境做数据导入时,发现开始执行导入任务会出现cpu狂飙的情况。几番定位查找发现是在读取excel的时候导致此问题的发生,因此在通常使用的为POI的普通读取,在遇到大数据量excel,50MB大小或数五十万行的级别的数据容易导致读取时内存溢出或者cpu飙升。需要注意,本......
  • EasyExcel复杂导出 一对多
     将数据一条一条查出来千万不要用一对多查询最后用方法进行合并publicclassExcelFileCellMergeStrategyimplementsCellWriteHandler{/***合并列的范围索引*/privateint[]mergeColumnIndex;/***合并起始行索引*/privateintmer......
  • EasyExcel简单导出
    @ApiOperation("导出历史上送记录")@PostMapping(value="/exportSend",produces="application/octet-stream")publicvoidexportExcel(@RequestBodyExportSendVOsendVO,HttpServletResponseresponse)throwsException{//获取数据List&......
  • SpringBoot3.x整合Druid数据库连接池
    引入依赖<!--Druid数据库连接池--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-3-starter</artifactId><version>1.2.21</version></dependency......
  • EasyExcel 读取xls 监听行数据问题
    需求:导入xls文件需要判断是否空值,时间格式是否问题监听器classExcelListenerextendsAnalysisEventListener<RevWaterUserDocAndUserPayImportExl>{publicExcelListener(List<RevWaterUserDocAndUserPayImportExl>result){this.list=result;......
  • 层高不等多层表头
    其他样式报表–层高不等多层表头概述层高不等多层表头:层高不等的多层表头报表。应用场景如下图所示,简单展示数据示例说明数据准备在数据面板中添加数据集,可选择Json数据集和Http接口数据集,Json数据如下图所示:[{"CustomerID":"HUNGC","CompanyName":"五金机械","Con......
  • easyexcel的读写操作
    easyexcel是基于java的读写excel的开源项目--读写也可理解为上传和下载写操作一、引入依赖<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.0.5</version></dependency>二、封装相应对象@Data@AllArgsConst......
  • vue element-ui表格table 表格动态 添加行、删除行、添加列、删除列 自定义表头
       vuetable表格动态添加行、删除行、添加列、删除列自定义表头; 增加一行、删除一行、添加一列、删除一列;每行带输入框input代码1、HTML部分:<template><divclass="app-container"><el-table:data="tableData"borderstyle="width:600px;margin-top:2......
  • 同时使用easyexcel和Apache poi的依赖冲突问题
      前言Hello,hello!这里是Blue,今天我写代码遇到了一个这样的问题,我在使用easyexcel的时候它无法去执行我的操作,通过我一定的判断最终解决了问题报错 com.alibaba.excel.exception.ExcelAnalysisException:java.lang.NoClassDefFoundError:org/apache/poi/POIXMLTy......