首页 > 其他分享 >easyexcel 下载

easyexcel 下载

时间:2024-01-15 11:44:32浏览次数:31  
标签:sheet easyexcel 写入 fileName write data response 下载

1,依赖

<!-- 3.1.1及以上可以支持分批下载 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.1.1</version>
</dependency>

2,编码

通用步骤:

1,构建sheet :设置sheet名称、格式

2,构建ExcelWriter:构建流,excel类型等

3,通过excelWriter将数据写入sheet

1,全量下载

/**
    * write data to excel
    * @param response : 要写入的流
    * @param data : 数据
    * @throws Exception
    */
private void writeData(HttpServletResponse response, List<List<String>> data, String filename) throws Exception {
       EasyExcel.write(getOutputStream(filename, response), List.class) // 每行的映射类型
              .excelType(ExcelTypeEnum.XLSX)
              .sheet("sheet1")
              .registerWriteHandler(getSheetStyle())
              .doWrite(data);
}

/**
    * 设置响应流格式
    * @param fileName 导出的文件名
    * @param response 响应流
    * @return
    * @throws Exception
    */
private OutputStream getOutputStream(String fileName, HttpServletResponse response) throws Exception {
       fileName = URLEncoder.encode(fileName, "UTF-8");
       response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
       response.setCharacterEncoding("utf8");
       response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");
       response.addHeader("Access-Control-Expose-Headers", "Content-disposition");
       return response.getOutputStream();
}

/**
    * set sheet style
    * @return
    */
private HorizontalCellStyleStrategy getSheetStyle() {
       //表头样式
       WriteCellStyle headWriteCellStyle = new WriteCellStyle();
       //设置表头居中对齐
       headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.LEFT);
       //内容样式
       WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
       //设置内容靠左对齐
       contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.LEFT);
       return new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
  }

2,分批下载

 // 1, 构建sheet
WriteSheet writeSheet = EasyExcel.writerSheet("sheet1").registerWriteHandler(getSheetStyle()).build();
// 2, 构建ExcelWriter
try(ExcelWriter excelWriter = EasyExcel.write(getOutputStream(fileName, response), List.class).excelType(ExcelTypeEnum.XLSX).build()) {
  // 写入表头
           excelWriter.write(data, writeSheet);
  // 批次
           int batchNum = count / InnerConst.BATCH_SIZE;
           batchNum += count % InnerConst.BATCH_SIZE == 0 ? 0 : 1;
  //分批写入数据
           for (int i = 1; i <= batchNum; i++) {
               // 获取分批数据
               List<List<String>> batchData = getQueryData(req);
               // 写入数据
               excelWriter.write(batchData, writeSheet);
               // 释放内存
               batchData.clear();
          }

      } catch (AppPortalException e) {
           e.printStackTrace();
}
 

标签:sheet,easyexcel,写入,fileName,write,data,response,下载
From: https://www.cnblogs.com/junc0125/p/17965044

相关文章

  • 网络爬虫-梨视频下载
    一、分析要在地址https://www.pearvideo.com/video_1747820中下载视频,首先要找打视频的源地址,查看源代码未发现有源代码,在元素中找,视频播放的时候,在<video>标签中找下载链接 注意:视频不播放,是看不到视频源地址的,把视频下载地址单独复制下来如下src="https://video.pearvi......
  • spring下载路径
     1.https://repo.spring.io/ui/2.artifactory--->artfacts--->plugins-release--->org----->springframework--->spring选择需要的版本下载即可3.spring项目至少需要5jarspring-aop.jar开发aop特性需要的jarspring-beans.jar   处理bean的jar......
  • 再议Linux中一些发行版中默认下载或上传工具curl的使用
    在目前的CentOS最小化安装发行版中,系统默认的下载/上传工具为:curl。curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。我们先来大概看一下curl工具的各选项的大概含义。-a/–append......
  • 如何在WSL中下载配置oh my posh美化终端
    官网地址Home|OhMyPosh其中包含了使用方法安装手册,主题分类,等一些列教学1、安装ohmyposhsudowgetsudowgethttps://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/posh-linux-amd64-O/usr/local/bin/oh-my-poshsudochmod+x/usr/local/bin/oh......
  • Vue项目下载依赖报错
    报错内容如下:npmERR!codeEPERMnpmERR!syscallopennpmERR!pathE:\nodejs\node_cache\_cacache\index-v5\2d\c6\f5749b7a403adaf0e2e39df42469722a24d2da8b573c676c602475e083denpmERR!errno-4048npmERR!Error:EPERM:operationnotpermitted,open�......
  • 多项式定积分计算软件2025 64位WIN版下载Polynomial definite integral calculation s
    本软件功能强大,价格实惠,欢迎试用本软件的WIN64位版本。本软件能计算如a0+a1*x+a2*x^2+......+an*a^n的式子的对b1和b2的积分的结果。具体的方法就是在多多项式系数区输入a0到an的值,然后点击计算积分结果即可在结果栏算出结果。最大项数为1000项。多项式系数输入时1项1行,从上......
  • 【VSCode】CMake Language Support 总是下载 .NET 超时,但又不想升级dotnet
    错误信息Error:Couldnotresolvedotnetpath!Anerroroccurredwhileinstalling.NET(6.0):.NETAcquisitionFailed:Installationfailed:Error:.NETinstallationtimedout.Youmayneedtochangethetimeouttimeifyouhaveaslowconnection.Pleasesee:h......
  • 免费APP分发,支持应用合并、内测分发、扫码下载,下载量安装量统计,版本记录和应用在线封
    免费APP内测分发托管平台,支持应用合并、内测分发、扫码下载,下载量安装量统计,版本记录和应用在线封装打包app应用分发?应用分发也叫APP分发,其主要功能是方便APP的快速安装测试和推广那么分发App选择什么平台最好呢?这个主要是看App处于什么阶段。看看是处于应用测试阶段还是处于测......
  • 【APP逆向04】Frida的下载与安装
    HOOK是什么?Hook框架是一种技术,用于在运行时拦截和修改应用程序的行为。通过Hook,你可以劫持应用程序的方法调用、修改参数、篡改返回值等,以达到对应用程序的修改、增强或调试的目的。常见的hook框架XposedFramework:Xposed是一个功能强大的开源Hook框架,可以在不修改......
  • 公司台式机上面的GitBlit代码管理-在IDEA中配置下载下来
    将现有项目设置成公司台式机上面的GitBlit代码管理对应的版本库 然后添加远程仓库路径 提交前一定多次确认远程仓库地址 然后提交......