Java_EasyExcel_导入_导出Java-js

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);@Overridepublic void invoke(BaseStoreDataExcelVo data, AnalysisContext analysisContext) {cachedDataList.add(data);if (cachedDataList.size() >= BATCH_COUNT) {saveData();// 存储完成清理 listcachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);}}@Overridepublic 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 会有问题,请直接用浏览器或者用postmantry {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();})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/216798.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ throw(抛出异常)详解

C 异常处理的流程&#xff0c;具体为&#xff1a; 抛出&#xff08;Throw&#xff09;--> 检测&#xff08;Try&#xff09; --> 捕获&#xff08;Catch&#xff09; 异常必须显式地抛出&#xff0c;才能被检测和捕获到&#xff1b;如果没有显式的抛出&#xff0c;即使…

深入理解强化学习——马尔可夫决策过程:策略迭代-[贝尔曼最优方程]

分类目录&#xff1a;《深入理解强化学习》总目录 当我们一直采取 arg ⁡ max ⁡ \arg\max argmax操作的时候&#xff0c;我们会得到一个单调的递增。通过采取这种贪心 arg ⁡ max ⁡ \arg\max argmax操作&#xff0c;我们就会得到更好的或者不变的策略&#xff0c;而不会使价值…

TrustGeo论文问题理解

1、网络空间测绘中&#xff0c;如何理解地标&#xff1f; 在网络空间测绘中&#xff0c;地标可以理解为在互联网空间中具有明显特征和稳定性的实体&#xff0c;它们可以作为网络空间的基准点&#xff0c;用于定位和标识其他网络实体。地标通常是在网络空间中具有较高价值和影响…

7-2 新奇偶分家

给定 N 个正整数&#xff0c;请按奇数和偶数将它们分开。 输入格式: 第一行给出一个正整数 N&#xff08;2≤N≤20&#xff09;。 第二行给出 N 个正整数&#xff0c;以空格分隔&#xff0c;保证其中既有奇数又有偶数。 输出格式: 按输入的先后顺序分别给出这 N 个正整数中…

2024世界燕窝滋补品展|上海燕博会推荐品牌天健燕窝集团-为消费者带来好燕窝!

天健燕窝集团拥有27年燕窝进出口贸易经验。是最早加入经营正规燕窝业务的企业之一&#xff0c;业务范围遍布全中国&#xff0c;2015 年至2019 年连续5年燕窝进口量全国第一。 一年一届的世界燕窝及天然滋补品博览会暨世界滋补生态发展大会&#xff08;简称上海燕博会&#xff…

ffmpeg相关命令

视频转码 dav转化为mp4格式 ffmpeg -i 2021-08-10.dav -codec copy 11.mp4二进制文件转为mp4格式 // -c:v 指定视频流编码器&#xff0c;不指定编码会默认用mp4这种容器的默认音视频编码进入编码 // copy&#xff1a;不重新编码直接copy源视频流ffmpeg -i 1701687125-4fc72a…

网格中的最小路径代价

说在前面 &#x1f388;不知道大家对于算法的学习是一个怎样的心态呢&#xff1f;为了面试还是因为兴趣&#xff1f;不管是出于什么原因&#xff0c;算法学习需要持续保持。 问题描述 给你一个下标从 0 开始的整数矩阵 grid &#xff0c;矩阵大小为 m x n &#xff0c;由从 0 …

VUE3语法--toRefs与toRef用法

1、功能概述 ref和reactive能够定义响应式的数据&#xff0c;当我们通过reactive定义了一个对象或者数组数据的时候&#xff0c;如果我们只希望这个对象或者数组中指定的数据响应&#xff0c;其他的不响应。这个时候我们就可以使用toRefs和toRef实现局部数据的响应。 toRefs是…

CentOS7 安装包 MariaDB 10.4.x

CentOS7 安装包 MariaDB 10.4.x 统一 MariaDB安装包 https://www.alipan.com/s/fvLg3gN7LPX 提取码: nh81 打开「阿里云盘」

React中父子之间数据的通信方式

上篇父子之间通信讲的是父子之间方法的通信&#xff0c;今天讲的是父子之间数据共享&#xff0c;因为是自己遇到什么就来总结什么了&#xff0c;所以没有一下更新完。 Father.tsx import React, { useEffect, useState, useRef } from react; import Child from ./component/c…

关于Anaconda的安装和环境部署(此章专为新手制定)

目录 Anaconda简介 一、软件下载&#xff08;地址&#x1f447;&#xff09; 2&#xff1a;点击下载 3&#xff1a;版本选择&#xff1a; 4&#xff1a;Anaconda的安装包就下载完成了 2&#xff1a;恭喜你&#xff0c;看到这里已经完成安装了 三、部署环境 1&#xff1…

【开题报告】基于SpringBoot的小饭桌管理系统的设计与实现

1.选题背景 &#xff08;1&#xff09;技术需求&#xff1a;随着互联网和移动互联网的快速发展&#xff0c;餐饮行业也面临着数字化、信息化的挑战和机遇。许多餐厅或饭店管理仍然采用传统的方式&#xff0c;存在着排队等候时间长、座位安排不合理等问题。因此&#xff0c;设计…

什么是 AWS IAM?如何使用 IAM 数据库身份验证连接到 Amazon RDS(上)

驾驭云服务的安全环境可能很复杂&#xff0c;但 AWS IAM 为安全访问管理提供了强大的框架。在本文中&#xff0c;我们将探讨什么是 AWS Identity and Access Management (IAM) 以及它如何增强安全性。我们还将提供有关使用 IAM 连接到 Amazon Relational Database Service (RDS…

ubuntu 20.04 server 安装 zabbix

ubuntu 20.04 server 安装 zabbix 参考文档 https://www.yuque.com/fenghuo-tbnd9/ffmkvs?# zabbix没用过&#xff0c;用过prometheus&#xff0c; 因为现在很多应用都支持直接接入prometheus监控&#xff0c; 而且大部分语言都都有sdk支持&#xff0c; 可以直接接入自己的…

Python卡尔曼滤波器OpenCV跟踪和预测物体的轨迹

模拟简单物体二维运动和预测位置 预测数学式 想象一下你正坐在一辆汽车里&#xff0c;在雾中行驶。 你几乎看不到路&#xff0c;但你有一个 GPS 系统可以告诉你你的速度和位置。 问题是&#xff0c;这个 GPS 并不完美&#xff1b; 它有时会产生噪音或不准确的读数。 您如何知…

lightdb 23.4 支持pivot行转列

前言 Lightdb-x支持行转列、列转行功能&#xff1a; pivot支持的语法如下&#xff1a; pivot支持项测试 pivot测试 create table hs_pivot(name varchar(40),course varchar(100),score int); insert into hs_pivot values(‘zhangsan’,‘chinese’,90); insert into h…

香港高才通计划申请被拒了?很可能是因为这五个原因!

香港高才通计划申请被拒了&#xff1f;很可能是因为这五个原因&#xff01; 据统计&#xff0c;截止今年10月31日&#xff0c;香港各项输入人才计划共收到超过18万宗申请&#xff0c;超过11万宗已被批准&#xff0c;已有7万人到港。其中&#xff0c;高才通计划一共收到约55,000…

Java基础语法之访问修饰限定符

private 表示私有的&#xff0c;只能在同一个包中的同一个类使用 像这样就是在同一个包中的不同类用了private修饰的变量&#xff0c;这是非法的&#xff0c;那到底该如何给a赋值呢&#xff1f;可以在定义时就赋值&#xff0c;但这样的代码就没有可操作性&#xff0c;所以我们…

2023年12月12日作业

头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimerEvent> #include <QTimer> #include <QTime> #include <QTextToSpeech>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : pub…

深入浅出接口测试原理及步骤

那么接口是什么&#xff1f; 软件开发&#xff0c;既要做前端&#xff0c;也要做后端&#xff0c;并且后端是整个业务的核心&#xff0c;用于处理业务请求&#xff0c;实现具体的功能&#xff1b;而前端只是提供一个页面给用户看结果以及提供页面给用户做输入。所以整个业务的…