Java_EasyExcel_导入_导出Java-js

2023-12-16

easyExcel导入

  • 从easyexcel官网中拷贝过来,使用到的,这是使用监听器的方法。
EasyExcel.read(file.getInputStream(), BaseStoreDataExcelVo.class, new ReadListener<BaseStoreDataExcelVo>() {
    /**
     * 单次缓存的数据量
     */
    public static final int BATCH_COUNT = 100;
    /**
     *临时存储
     */
    private List<BaseStoreDataExcelVo> cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);

    @Override
    public void invoke(BaseStoreDataExcelVo data, AnalysisContext analysisContext) {
        cachedDataList.add(data);
        if (cachedDataList.size() >= BATCH_COUNT) {
            saveData();
            // 存储完成清理 list
            cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
        }
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        saveData();
    }

    /**
     * 存储数据库
     */
    private void saveData() {
        saveAndUpdate(cachedDataList, result);
    }
}).headRowNumber(3).sheet().doRead();
  • 其中headRowNumber是指表头为第三行,数据从第四行开始读取

使用easyExcel导出数据

  • 封装了一个导出的工具类,也是使用 easyexcel

    /**
     * 方法描述: 浏览器点击导出后导出文件
     *
     * @param response 响应
     * @param list  导出数据集合
     * @param fileName 文件名 不含后缀
     * @param clazz 导出数据的数据类型
     * @return void
     */
    public static void exportExcel(HttpServletResponse response, List<?> list,
                                   String fileName, Class<?> clazz) throws IOException {

        if (CollectionUtils.isEmpty(list)) {
            throw new RuntimeException();
        }
        if (StringUtils.isEmpty(fileName)) {
            fileName = new Date().toString();
        }
        String sheetName = fileName;
        // 使用swagger 会有问题,请直接用浏览器或者用postman
        try {
            response.setContentType("application/vnd.ms-excel");
            response.setCharacterEncoding("utf-8");
            //防止中文乱码
            fileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");
            response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");

            //表头字体颜色map 1为user中索引位置
            Map<Integer,Short> colorMap=new HashMap<>();
//            colorMap.put(1, IndexedColors.BLUE.index);
            ExcelCellWidthStyleStrategy widthStyleStrategy = new ExcelCellWidthStyleStrategy();
            // 这里需要设置不关闭流
            EasyExcel.write(response.getOutputStream(), clazz)
                    .registerWriteHandler(widthStyleStrategy)
                    .registerWriteHandler(new XCellStyleUtils(colorMap))
                    .autoCloseStream(Boolean.FALSE).sheet(sheetName)
                    .doWrite(list);
        } catch (Exception e) {
        }
    }
  • 控制层使用
    @GetMapping("/downloadStoreSelect")
    @ApiOperation("数据下载")
    public void downloadStoreSelect(HttpServletResponse response) {
        Page<BaseStoreData> baseStoreDataPage = storeDataService.selectPage(null);
        try {
            EasyExcelUtils.exportExcel(response, changeData(baseStoreDataPage.getRecords()), "库存.xlsx", BaseStoreDataExcelVo.class);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

    }

使用easyExcel下载对应前端代码

  downloadStoreSelect().then(response => {
    const url = window.URL.createObjectURL(new Blob([response.data]));
    const link = document.createElement('a');
    link.href = url;
    link.setAttribute('download', 'export.xlsx'); // 下载文件名
    document.body.appendChild(link);
    link.click();
  })
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java_EasyExcel_导入_导出Java-js 的相关文章

  • 在Java中使用命令行编译多个包

    您好 我一直在使用 IDE 但现在我需要从命令行运行和编译 问题是我有多个软件包 我试图找到答案 但没有任何效果 所以我有 src Support java files Me java files Wrapers java files 你知
  • Google App Engine with Java - 运行 javac.exe 编译器时出错

    在 Windows XP 上 刚刚下载并解压谷歌应用程序引擎java sdk to C Program Files appengine java sdk 我已经安装了jdk C Program Files Java jdk1 6 0 20
  • 正则表达式获取字符串中的第一个数字和其他字符

    我是正则表达式的新手 想知道如何才能只获取字符串中的第一个数字 例如100 2011 10 20 14 28 55 在这种情况下 我希望它返回100 但该数字也可以更短或更长 我在想类似的事情 0 9 但它单独获取每个数字 100 2001
  • 是否有任何API可以将Microsoft Exchange服务器与Java应用程序集成以进行任务同步?

    我正在尝试将 Java Web 应用程序与 Microsoft Exchange 服务器集成以实现双向日历 即任务 同步 是否有用于此集成的 Java 开源 商业 API 谢谢 文卡特 看一眼j 交易所 http sourceforge n
  • 如何拦截 REST 端点以接收所有标头?

    我当前的代码是 Path login RequestScoped public class LoginResource GET SecurityChecked public Response getUser HeaderParam AUTH
  • 所以,我有 6 个“主”文件,然后分为 40 个单独的文件

    我将简要描述我想要的内容 我有 6 个 主 文件 每个文件包含 40 个工作表 如下所示 AG 工作簿有 HR Gp 1 到 HR Gp 40 ER 工作簿有 FB Gp 1 到 Gp 40 等 所有工作表都已 平坦 我已经成功创建了一个适
  • 将 Excel 范围转换为 VBA 字符串

    我想将给定范围内的值转换为 VBA 字符串 其中原始单元格值由任何选定的列分隔符和行分隔符分隔 分隔符可以是一个字符或更长的字符串 行分隔符是行末尾的字符串 该字符串应该像我们从左上角 从左到右 到右下角读取文本一样完成 以下是范围 A1
  • 有多少种方法可以将位图转换为字符串,反之亦然?

    在我的应用程序中 我想以字符串的形式将位图图像发送到服务器 我想知道有多少种方法可以将位图转换为字符串 现在我使用 Base64 格式进行编码和解码 它需要更多的内存 是否有其他可能性以不同的方式做同样的事情 从而消耗更少的内存 现在我正在
  • 从 @JsonProperty 值获取枚举常量

    我有一个标有 JsonProperty 的枚举 用于使用 Jackson 进行 JSON 序列化 反序列化 并且希望获取给定字符串 JsonProperty 的枚举值 public enum TimeBucket JsonProperty
  • 如何将 Observable>> 转换为 Observable>

    我陷入了如何将以下可观察类型转换 转换为我的目标类型的困境 我有以下类型的可观察值 Observable
  • 发生错误。请参阅日志文件 - eclipse juno

    每当我启动 Eclipse Juno 时 都会出现错误 发生错误 请查看日志文件 C Program Files eclipse configuration 1362989254411 log 有的网站说卸载jdk重新安装 我这样做了 但没
  • 创建正则表达式匹配数组

    在Java中 我试图将所有正则表达式匹配返回到一个数组 但似乎您只能检查模式是否匹配某些内容 布尔值 如何使用正则表达式匹配来形成与给定字符串中的正则表达式匹配的所有字符串的数组 4城堡的回答 https stackoverflow com
  • 如何将 arraylist 从 servlet 传递到 javascript?

    我通过在属性中设置数组列表并将其转发到 jsp 来从 servlet 传递数组列表 Servlet ArrayList
  • 改变for循环的顺序?

    我遇到一种情况 我需要根据用户输入以不同的顺序循环遍历 xyz 坐标 所以我是 3D 空间中的一个区域 然后是一组像这样的 for 循环 for int x 0 x lt build getWidth x for int y 0 y lt
  • 如何在Java媒体框架中学习.wav持续时间?

    我正在尝试使用 java 媒体框架将 mov 文件与 wav 文件合并 因此我需要知道它们的持续时间 我怎样才能做到这一点 任何想法 将不胜感激 您可以使用以下方式了解声音文件的持续时间 即 VitalyVal 的第二种方式 import
  • 了解 Spark 中的 DAG

    问题是我有以下 DAG 我认为当需要洗牌时 火花将工作划分为不同的阶段 考虑阶段 0 和阶段 1 有些操作不需要洗牌 那么为什么 Spark 将它们分成不同的阶段呢 我认为跨分区的实际数据移动应该发生在第 2 阶段 因为这里我们需要cogr
  • 公共方法与公共 API

    在干净的代码书中 有一个观点是 公共 API 中的 Javadocs 同样 Effective java 一书也有这样的内容 项目 56 为所有公开的 API 元素编写文档注释 所以这就是我的问题 所有公共方法都被视为公共 API 吗 它们
  • 摩尔斯电码 至 英语

    我现在的问题是让 摩尔斯电码转英语 正常工作 将英语转换为莫尔斯电码的第一部分工作正常 我知道以前已经有人问过这个问题 但我不知道我做错了什么 我知道我需要在某个地方进行拆分 但我只是不确定将其放在代码中的何处 现在 莫尔斯电码到英语的部分
  • Java:使用 Graph API 在线更新 Sharepoint 上的 docx 文件

    我在使用 Java 在线更新 Sharepoint 上的 docx 文件时遇到问题 首先 我检查了构建 PUT 请求的 URL 此处 并使用此请求 PUT drives drive id items item id content 我首先使
  • Java、Spring、Hibernate找不到org.springframework.orm.hibernate3.LocalSessionFactoryBean

    我正在尝试制作 spring hibernate ant 项目 目前我收到此错误 HTTP Status 500 type Exception report message description The server encountere

随机推荐

  • 题解 | #查找入职员工时间排名倒数第三的员工所有信息#

    转转深圳这波操作是真的服了 转转毁了多少意向 阿里1688暑期实习Java二面 2023 3 15 阿里1688一面 24秋招总结 新生一学期敲70万行代码 秋招结束 前天谈薪 明天准备签了 傻叉研究生 人保财险一面 人保科技 二面 快过年
  • 题解 | #反转链表#很简单,新建节点插在末尾就行

    华为车bu最新情况汇总 华为车bu最新情况汇总 某小厂实习面经 已oc 华子开了 比亚迪vs华为 麻烦大家帮忙比较一下offer 帮选offer 秋招决赛圈 offer选择 太难了呜呜呜帮忙选一下Offer 晒一晒我的offer 38210
  • 亚洲VPS行业深度分析:如何选择最适合你的服务

    在数字化时代 亚洲地区的企业和个人越来越需要可靠的VPS服务 本文将深入分析亚洲VPS行业 以帮助你选择最适合你需求的服务 为什么选择VPS VPS是一种虚拟服务器 具有更高的性能和稳定性 适合网站托管 应用程序开发和数据存储等用途 在亚洲
  • 面试想拿 10K,HR 说你只值 7K,该怎样回答或者反驳?

    傲韦科技二面 拷打项目30分钟 随便聊20分钟1 shardingsphere是什么 怎么用的 分片键如何选择的 电话关联表和邮箱关联表为什么要分开搞 敏感信息加密存储 实 题目解析 题目描述 给出一个矩阵 求出其中的最大值及所在的行号和列
  • 题解|#E. Sending a Sequence Over the Network# cf round 826

    入职半年 成长颇多 秋招逃兵 2020秋招面经大汇总 旷视 回暖分析 战绩结算 on 赛文X 体制内离职 奔赴下一场山海 拒了华为 重回0 offer 体制内离职 奔赴下一场山海 拒了华为 重回0 offer 找实习需要实习经历 应届生谨慎
  • 龙蜥位列用户意愿迁移系统首位,中国操作系统要敢于“亮剑”

    让前路 起后浪 迷茫过 怀疑过 跌倒过 熄不灭 眼中的光 摘自歌曲 行者为光 就像歌中所唱 国内操作系统的演进虽然是夹缝中求生存 却始终前赴后继 矢志不渝 从而逐步实现替代甚至跃升的过程 曾经占据市场主流的CentOS停服 像是一个信号 一
  • CN2 VPS引领行业革命:为什么每个企业都需要它

    在当今数字化时代 企业面临着巨大的在线竞争压力 为了在市场中脱颖而出并确保业务的可持续增长 可靠的网络基础设施是至关重要的 这就是为什么越来越多的企业正在转向CN2 VPS的原因 这一技术正在引领行业革命 为企业提供了更高效 更安全 更可靠
  • 24届友友们还想去腾讯!?哪些岗位还在热招?看这一篇就足够!

    分享虾皮Shopee面经 iOS方向 Shopee ios开发面经 广东工业大学电子信息硕士这么好找工作吗 秋招补录公司直投链接汇总 被鸽了32个sp 太难了 求大家投小米吧 华为给我oc了 问我毁不毁约 2023年最佳雇主榜单评选结果出来
  • 工业互联网会是制造业数字化发展的未来吗?

    新工业革命正逐步形成 你认为工业互联网会是制造业数字化发展的未来吗 从这几年的工业互联网发展政策措施 就能看到答案 早在近三年前 工业互联网创新发展行动计划 2021 2023年 就提出了五方面 11项重点行动和10大重点工程 着力解决工业
  • 在喜马拉雅直播运营mentor超级nice,弹性工作制

    12月校招补录开启 C 大类岗位12 14已更新 华子开奖 好未来测开一二三四面面经 联想 测开一面面经 攒人品 联想 4 13测开 面试 联想测开一面 联想测开二面 联想测开 面试 联想测开一面 联想测开一面 base天津 联想测开一二面
  • 国外免费VPS真的零成本云计算体验?

    在当今数字化时代 云计算已经成为企业和个人的热门选择之一 云计算提供了便捷 灵活和经济高效的计算资源 可以帮助人们处理数据 托管网站 运行应用程序等等 然而 对于一些初学者来说 使用云计算可能会变得有些昂贵 但是 有一种方式可以让您尝试云计
  • 工业级路由器在风力发电场的远程监控技术

    工业级路由器在风力发电场的远程监控技术方面具有重要的应用意义 风力发电场通常由分布在广阔地区的风力发电机组组成 需要进行实时监测 数据采集和远程管理 工业级路由器作为网络通信设备 能够提供稳定可靠的网络连接和多种远程管理功能 对于风力发电场
  • 开源、免费、可私有部署的在线多人协同办公系统推荐?

    开源 免费 可私有部署的在线多人协同办公系统推荐 在考虑选择在线多人协同办公系统时 免费且开源的方案看似经济实惠 但实际上可能存在一些潜在 隐性成本 比如在系统的维护 安全性 定制化需求以及技术支持方面可能会有额外的支出 企业在选择系统时应
  • 张正友相机标定法原理与实现

    张正友相机标定法是张正友教授1998年提出的单平面棋盘格的相机标定方法 传统标定法的标定板是需要三维的 需要非常精确 这很难制作 而张正友教授提出的方法介于传统标定法和自标定法之间 但克服了传统标定法需要的高精度标定物的缺点 而仅需使用一个
  • Java_Mybatis_缓存

    缓存 1 概述 Mybatis 缓存 MyBatis 内置了一个强大的事务性查询缓存机制 它可以非常方便地配置和定制 2 会话缓存 一级缓存 sqlSession 级别的 也就是说 使用同一个 sqlSession 查询同一 sql 时 直
  • 字节电商双11 大促容量保障是如何做的?

    前言 Rhino 简介 Rhino是字节自研全链路容量评估产品 致力于构建完整的全链路容量评估解决方案 覆盖 容量预估 gt 资源准备 gt 数据准备 gt 容量验证 gt 监控 gt 分析 gt 决策 gt 处理反馈 围绕容量在稳定性 成
  • 《VirtualLab Fusion物理光学实验教程》好书分享

    目录 第一章 物理光学概念介绍 6 1 1 几何光学和光线追迹 6 1 2 物理光学和光场追迹 6 1 3 电场 磁场以及坡印廷矢量 8 1 4 振幅 相位及实部和虚部 9 1 5 振幅 相位与偏振 10 1 6菲涅尔公式 11 1 7 全
  • SqlServer_更改数据类型

    SQL server修改数据类型 使用以下命令可以进行修改 Alter table monthly import demand alter column ImportWeight DECIMAL 18 4
  • 3、Linux_系统用户管理

    1 Linux 用户管理 1 1概述 Linux系统是一个多用户多任务的操作系统 任何一个要使用系统资源的用户 都必须首先向系统管理员申请一个账号 然后以这个账号的身份进入系统 root 用户是系统默认创建的管理员账号 1 2添加用户 语法
  • Java_EasyExcel_导入_导出Java-js

    easyExcel导入 从easyexcel官网中拷贝过来 使用到的 这是使用监听器的方法 EasyExcel read file getInputStream BaseStoreDataExcelVo class new ReadList