Springboot以Post方式导出excel文件

这篇具有很好参考价值的文章主要介绍了Springboot以Post方式导出excel文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

场景:

导出excel文件,但是需要传入参数,get方法传参懂的都懂,所以改成post方式

少废话,上代码:文章来源地址https://www.toymoban.com/news/detail-466791.html

Controller:

@PostMapping(value = "/exportCustomMItemDataWithLine.iom")
@ResponseBody
@ApiOperation(value = "数据查询导出(自定义)", notes = "", produces = "application/json")
public Mono<Void> exportCustomMItemDataWithLine(ServerHttpResponse response , @RequestBody JSONObject jsonObject) {
    DataBuffer dataBuffer = response.bufferFactory().allocateBuffer();
    OutputStream outputStream = dataBuffer.asOutputStream();
    MediaType application = new MediaType("application", "msword", Charset.forName("UTF-8"));
    File file = null;
    try {
        file = iomPrecisionManagementService.exportCustomMItemData(jsonObject);
        response.getHeaders().setContentType(application);
        response.getHeaders().set("Content-Disposition", "attachment; filename=" + URLEncoder.encode(file.getName(), "utf-8"));
        InputStream bis = new BufferedInputStream(new FileInputStream(file));
        byte[] b = new byte[bis.available() + 1000];
        int i = 0;
        while ((i = bis.read(b)) != -1) {
            outputStream.write(b, 0, i);
        }
        outputStream.flush();
        outputStream.close();

        if (file != null) {
            FileUtil.deleteFileLater(file);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return response.writeWith(Mono.just(dataBuffer));
}

Service:

@Override
public File exportCustomMItemData(JSONObject jsonObject) throws IOException {
    String fileName = "数据查询导出模板";
    String fileType = ".xls";
    File file = new File(fileName + "_" + System.currentTimeMillis() + fileType);
    List<String> nameList = new ArrayList<>();
    List<String> codeList = new ArrayList<>();

    if(!ToolsUtil.isEmpty(jsonObject.get("nameCode")) && !ToolsUtil.isEmpty(ToolsUtil.jsonObjectToEntityList(jsonObject.get("nameCode") , NameCode.class))){
        List<NameCode> mapList = ToolsUtil.jsonObjectToEntityList(jsonObject.get("nameCode") , NameCode.class);
        nameList = mapList.stream().map(NameCode::getName).collect(Collectors.toList());
        codeList = mapList.stream().map(NameCode::getCode).collect(Collectors.toList());
    }else {
        nameList = Arrays.asList(
                "事业部名称" ,
                "车间" ,
                "产线" ,
                "区域" ,
                "标准名称",
                "标准值",
                "测量数值",
                "测量时间",
                "测量人",
                "测量方式",
                "总分",
                "周期开始时间",
                "周期结束时间",
                "备注",
                "超期标识",
                "完成标识"
        );
        codeList = Arrays.asList(
                "businessName" ,
                "dutyDepartmentName" ,
                "productionLineName" ,
                "productionLineAreaName" ,
                "standardName" ,
                "standardValue" ,
                "measureValue" ,
                "measureTime" ,
                "measurer" ,
                "measureType" ,
                "totalScore" ,
                "cycleStartTime" ,
                "cycleEndTime" ,
                "remark" ,
                "isBeyond" ,
                "isFinish"
        );
    }



    Workbook wb = new HSSFWorkbook();
    int rowSize = 1;
    Sheet sheet = wb.createSheet();
    Row row = sheet.createRow(rowSize);
    for (int i = 0; i < nameList.size(); i++) {
        row.createCell(i + 1).setCellValue(nameList.get(i));
    }

    //从第二行,第二列开始追加列
    int start = 2;
    List<MItemDataExcelPojo> poJoList = matchMItemPojo(queryMItemList(new JSONObject()));

    //抽取
    List<Integer> selectIDList = new ArrayList<>();
    if(!ToolsUtil.isEmpty(jsonObject.get("selectIDs"))){
        selectIDList = ToolsUtil.jsonObjectToEntityList(jsonObject.get("selectIDs") , Integer.class);
        List<MItemDataExcelPojo> tmpList = new ArrayList<>(selectIDList.size());
        for(Integer selectID : selectIDList){
            tmpList.add(poJoList.get(selectID));
        }
        poJoList = tmpList;
    }

    try{
        for (MItemDataExcelPojo item : poJoList) {
            row = sheet.getRow(start);
            if (row == null) {
                row = sheet.createRow(start);
            }

            for(int i = 0 ; i < codeList.size() ; i++){
                String methodName = "get" + ToolsUtil.toUpperCaseFirstOne(codeList.get(i));
                Method method = item.getClass().getMethod(methodName);
                row.createCell(i+1).setCellValue(ObjectUtils.filterEmptyData(method.invoke(item)));
            }

            start++;
        }
    }catch (Exception e){

    }

    FileOutputStream out = null;
    try {
        out = new FileOutputStream(file);
        out.flush();
        wb.write(out);
        out.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return file;
}

到了这里,关于Springboot以Post方式导出excel文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • poi实现Excel文件导出【SpringBoot篇】

    在系统中,数据库的excel文件导出是一项及为基础的功能。此篇文章将通过实例利用poi实现excel文件导出。 Jakarta POI 是apache的子项目,目标是处理ole2对象。它提供了一组操纵Windows文档的Java API 。目前比较成熟的是HSSF接口,处理MS Excel(97-2002)对象。它不象我们仅仅是用csv生

    2024年02月05日
    浏览(44)
  • JAVA:使用POI SXSSFWorkbook方式导出Excel大数据文件

    Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java对Microsoft Office格式档案读和写的功能。POI组件可以提供Java操作Microsoft Office的API,导出格式为Office 2003时POI调用的HSSF包,导出格式为Office 2007时,调用XSSF包,而SXSSF包是POI3.8版本之上对XSSF的一个扩展,用

    2024年02月11日
    浏览(50)
  • poi实现excel文件导入导出(基本数据导出、含格式导出、含批注导出、含图片图表导出)——springboot

    本文主要是介绍springboot + poi实现基本的excel文件导入导出,包含数据导出导入时数据的其他需求校验,导出含有批注信息、导出含有图片信息、导出含有图表信息等的介绍等等,主要是一个demo尽可能简单明了的来介绍相关功能即可。有什么问题可以在留言哦!并在文章末尾附

    2024年02月08日
    浏览(81)
  • Springboot 集成 Ureport2 导出Excel报表、生成PDF文件

    目录 1.ureport 介绍:     文档视频教程地址: 2. 如何在springboot 项目中实现各种报表导出、PDF文件导出 2.1使用IDEA创建maven工程   2.2添加yml配置信息 application.yml: 2.3添加引用UReport2的Spring配置文件context.xml  2.4添加property文件 2.5新建webapp目录,新建WEB-INF 2.7 创建启动类   2.8

    2024年02月08日
    浏览(53)
  • Springboot基于easyexcel实现一个excel文件包含多个sheet表格的数据导出

    EasyExcel 是一款基于Java的开源Excel操作工具,它提供了简单且强大的 API,使开发人员可以轻松地读写、操作和生成Excel文件。 EasyExcel 支持 Excel 文件的导入和导出,可以处理大量数据,具有高性能和低内存占用。它可以读取 Excel 文件中的数据,并将数据转换为 Java 对象,也可

    2024年02月03日
    浏览(59)
  • 基于SpringBoot + EasyExcel + Vue + Blob实现导出Excel文件的前后端完整过程

    首先前端发起HTTP请求之后,后端返回一个Excel输出流,然后前端用Blob类型接收数据,并且解析响应头数据以及提取源文件名,最后用a标签完成下载。 一、后端代码 (1)导入阿里巴巴的EasyExcel依赖(pom.xml) (2)控制层(GameController.java) (3)接口层(IGameService.java) (4)

    2024年02月16日
    浏览(43)
  • 【MySQL × SpringBoot 突发奇想】全面实现流程 · 数据库导出Excel表格文件的接口

    在上一篇博客,【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口_s:103的博客-CSDN博客 我们学习了如何导入表格,现在我们反过来,看看如何导出表格~ 网络资料: View Object(视图对象)是一种在软件开发中常见的设计模式,它用于在用户界面

    2024年02月08日
    浏览(49)
  • 实现excel导出最简单方式

    今天来记录一下导出excel的实现方式,导出的格式是xlsx的文件。 这里用到的是hutool的工具包,依赖如下: 导出代码如下:

    2024年02月10日
    浏览(46)
  • vue实现导出excel的多种方式

    在Vue中实现导出Excel有多种方式,可以通过前端实现,也可以通过前后端配合实现。下面将详细介绍几种常用的实现方式。 使用 xlsx 库:使用 xlsx 库可以在前端将数据导出为Excel文件。首先需要安装 xlsx 库,然后在Vue组件中引入并使用该库来处理数据并导出Excel文件。以下是一

    2024年02月11日
    浏览(42)
  • 导出excel,导出模板Excel(双工作蒲)压缩文件导出(即下载文件)

    下面是文件表格和entity对象

    2024年02月12日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包