若依集成更好用的easyexcel

背景

  • 若依使用的是apach poi并在此基础上进行封装
  • apach poi的原生的api是很复杂的,若依简化了了此操作
  • apach poi的上传速率和下载速率都是没有优化的,依赖于文件大小的限制
  • 在此前提下,如果没法满足客户的需求(超大型文件的上传),可以集成easyexcel

对比

  • easyexcel 上手更加容易,甚至能够兼容apach poi,能够处理大型的excel,但是不能处理其他类型的文件
  • apach poi能够处理所有的文件类型,类似于excel、PDF、word,但是效率比较低下

导入依赖

官网找到对应的插件集成文档

在这里插入图片描述
在这里插入图片描述

修改

原本的maven的版本太低

<!-- easyexcel -->
<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.6</version>
</dependency>

使用maven-search,找到合适的版本

 <!--  easyExcel工具--><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>4.0.1</version></dependency>

导入完了,刷新一下缓存,检查一下是不是真的导进来了

在这里插入图片描述

新增方法

找到common/poi/excelUtil 工具类,在类的最后加上 两个方法

import com.alibaba.excel.EasyExcel;/*** 对excel表单默认第一个索引名转换成list(EasyExcel)* * @param is 输入流* @return 转换后集合*/
public List<T> importEasyExcel(InputStream is) throws Exception
{return EasyExcel.read(is).head(clazz).sheet().doReadSync();
}/*** 对list数据源将其里面的数据导入到excel表单(EasyExcel)* * @param list 导出数据集合* @param sheetName 工作表的名称* @return 结果*/
public void exportEasyExcel(HttpServletResponse response, List<T> list, String sheetName)
{try{EasyExcel.write(response.getOutputStream(), clazz).sheet(sheetName).doWrite(list);}catch (IOException e){log.error("导出EasyExcel异常{}", e.getMessage());

修改实体类

/*** 商品管理对象 tb_sku* * @author z* @date 2024-12-06*/
@ExcelIgnoreUnannotated // 忽略未标记Excel注解的字段 只对标注的字段进行导出导入
@ColumnWidth(16) // 列宽
@HeadRowHeight(14) // 表头行高
@HeadFontStyle(fontHeightInPoints = 11) // 表头字体大小
public class Sku extends BaseEntity
{private static final long serialVersionUID = 1L;/** 主键 */private Long skuId;/** 商品名称 */@Excel(name = "商品名称")@ExcelProperty(value = "商品名称")private String skuName;/** 商品图片 */@Excel(name = "商品图片",cellType = Excel.ColumnType.IMAGE)@ExcelProperty(value = "商品图片")private String skuImage;/** 品牌 */@Excel(name = "品牌")@ExcelProperty(value = "品牌")private String brandName;/** 规格(净含量) */@Excel(name = "规格(净含量)")@ExcelProperty(value = "规格")private String unit;/** 商品价格,单位分 */@Excel(name = "商品价格,单位分")@ExcelProperty(value = "商品价")private Long price;/** 商品类型Id */@Excel(name = "商品类型Id")@ExcelProperty(value = "商品类型Id")private Long classId;/** 是否打折促销 */private Integer isDiscount;}

改写controller中导出为

    /*** 导出商品管理列表*/@PreAuthorize("@ss.hasPermi('manage:sku:export')")@Log(title = "商品管理", businessType = BusinessType.EXPORT)@PostMapping("/export")public void export(HttpServletResponse response, Sku sku){List<Sku> list = skuService.selectSkuList(sku);ExcelUtil<Sku> util = new ExcelUtil<Sku>(Sku.class);//util.exportExcel(response, list, "商品管理数据"); // 使用若依原本的poi导出util.exportEasyExcel(response, list, "商品管理数据"); // 使用修改后的easyExcel导出}

改写controller中导入为importEasyExcel

    /*** 商品导入*/@PreAuthorize("@ss.hasPermi('manage:sku:import')")@Log(title = "商品管理", businessType = BusinessType.IMPORT)@PostMapping("/import")public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception{ExcelUtil<Sku> util = new ExcelUtil<Sku>(Sku.class);
//        List<Sku> skuList = util.importExcel(file.getInputStream()); // 原本的poi导入List<Sku> skuList = util.importEasyExcel(file.getInputStream()); // 修改后之后的easyExcel导入String operName = SecurityUtils.getUsername();updateSupport = true;String message = skuService.importSkuList(skuList, updateSupport, operName);return AjaxResult.success(message);}

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

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

相关文章

阿里内部正式开源“Spring Cloud Alibaba (全彩小册)”

年轻的毕业生们满怀希望与忐忑&#xff0c;去寻找、竞争一个工作机会。已经在职的开发同学&#xff0c;也想通过社会招聘或者内推的时机争取到更好的待遇、更大的平台。 然而&#xff0c;面试人群众多&#xff0c;技术市场却相对冷淡&#xff0c;面试的同学们不得不面临着 1 个…

Android问题记录 - Inconsistent JVM-target compatibility detected for tasks

文章目录 前言开发环境问题描述问题分析解决方案补充内容最后 前言 前段时间升级Android Studio后修复了一堆问题&#xff0c;详情请看&#xff1a;Android问题记录 - 适配Android Studio Ladybug/Java 21/AGP 8.0&#xff08;持续更新&#xff09;。我以为问题已经全部解决了…

分布式专题(1)之Redis持久化、主从与哨兵架构详解

一、Redis持久化 1.1 RDB快照&#xff08;snapshot&#xff09; 在默认的情况下&#xff0c;Redis将内存数据快照保存名字为&#xff1a;dump.rdb的二进制文件中&#xff0c;当然你在配置文件redis.conf中修改对应的二进制文件名。 redis开启RDB快照&#xff0c;可以在redis中…

Y20030053 JSP+SSM+MYSQL+LW+旅游系统的设计与实现 源码 配置 文档 全套资料

旅游系统的设计与实现 1.摘要2.开发目的和意义3.系统功能设计4.系统界面截图5.源码获取 1.摘要 摘 要 随着旅游业的蓬勃发展和人们对休闲度假需求的不断增加&#xff0c;旅游业管理面临着越来越多的挑战。为了提高管理效率、优化客户体验并增强市场竞争力&#xff0c;本文介绍…

TypeScript进阶

Typescript进阶 基础知识 JavaScript 的核心特点就是灵活&#xff0c;但随着项目规模的增大&#xff0c;灵活反而增加开发者的心智负担。例如在代码中一个变量可以被赋予字符串、布尔、数字、甚至是函数&#xff0c;这样就充满了不确定性。而且这些不确定性可能需要在代码运行…

github操作学习笔记

git开源的分布式版本控制系统&#xff1a; 每次修改文件提交后&#xff0c;都会自动创建一个项目版本 查看git版本看有没有安装成功&#xff1a;git --version 把默认编辑器设置成vim&#xff1a;git config --global core.editor "vim" 1、设置昵称和邮箱&#xff…

QT 多级嵌套结构体,遍历成员--半自动。<模板+宏定义>QTreeWidget树结构显示

Qt的QTreeWidget来显示嵌套结构体的成员&#xff0c;并以树形结构展示。 #include <QApplication> #include <QTreeWidget> #include <QTreeWidgetItem> #include <QString> #include <cstdint>// 假设这些是你的结构体定义 struct BaseMeterPa…

简明速通Java接口

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文从代码层面直接整理Java接口 让老油子们无需再理解繁杂的概念了。 Java接口在代码层面是做什么的 说白了老铁&#xff0c;Java的接口就是一个类&#xff0c;这个类中只能声明属性和方法&#xff0c;属性需要…

2.linux中调度kettle

一.准备转换&#xff0c;等会在linux中用 1.添加excel输入组件&#xff0c;并添加对应的文件 2.添加列拆分为多行组件 3.添加文本文件输出组件 4.保存转换 二.linux安装java 1.把jdk-8u144-linux-x64.tar.gz上传到linux的/lx目录下 2. 解压jdk包&#xff0c;然后配置环境变量…

【C#设计模式(19)——备忘录模式(MementoPattern)】

前言 备忘录模式&#xff1a;将想要备份的信息交给备忘录对象来管理。通过设置初始、备份、修改、恢复等状态展示备忘录模式的使用。 代码 //备忘录类 public class Memento {private string state;public string State { get>state;}public Memento(string state){this.st…

如何将CSDN博客下载为PDF文件

1.打开CSDN文章内容 2.按键盘上的f12键&#xff08;或者右键—审查元素&#xff09;进入浏览器调试模式&#xff0c;点击控制台&#xff08;Console&#xff09;进入控制台 3.在控制台输入以下代码&#xff0c;回车 (function(){ $("#side").remove(); $("#…

GWAS分析先做后学

大家好&#xff0c;我是邓飞。 GWAS分析是生物信息和统计学的交叉学科&#xff0c;上可以学习编程&#xff0c;下可以学习统计。对于Linux系统&#xff0c;R语言&#xff0c;作图&#xff0c;统计学&#xff0c;机器学习等方向&#xff0c;都是一个极好的入门项目。生物信息如…

git命令基本操作

一、git介绍 Git 是一个开源的分布式版本控制系统&#xff0c;旨在提供一个快速、灵活且分布式的版本控制系统&#xff0c;能够处理从小型个人项目到大型复杂企业项目的各种规模的开发工作。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制…

快速了解 Aurora DSQL

上周在 AWS re:Invent大会&#xff08;类似于阿里云的云栖大会&#xff09;上推出了新的产品 Aurora DSQL[1] &#xff0c;在数据库层面提供了多区域、多点一致性写入的能力&#xff0c;兼容 PostgreSQL。并声称&#xff0c;在多语句跨区域的场景下&#xff0c;延迟只有Google …

大数据之国产数据库_OceanBase数据库002_在centos7.9上_安装部署OceanBase001_踩坑指南_亲测可用

部署前最好看一下,部署前的要求, 主要是系统 以及系统内核版本,还有比如清理一下缓存等,按照做一做. 这些都是前置条件. 清一下缓存. 也就是说官网给的前置的条件,都要根据说明去执行一遍,如果不执行可能后面安装会报错. 然后用户最好也去创建一个用户. 注意前置

Kafka Stream实战教程

Kafka Stream实战教程 1. Kafka Streams 基础入门 1.1 什么是 Kafka Streams Kafka Streams 是 Kafka 生态中用于 处理实时流数据 的一款轻量级流处理库。它利用 Kafka 作为数据来源和数据输出&#xff0c;可以让开发者轻松地对实时数据进行处理&#xff0c;比如计数、聚合、…

Leecode刷题C语言之判断国际象棋棋盘中一个格子的颜色

执行结果:通过 执行用时和内存消耗如下&#xff1a; 代码如下 &#xff1a; bool squareIsWhite(char* s) {return s[0] % 2 ! s[1] % 2; } 解题思路&#xff1a; 这段代码的目的是判断一个给定的字符串 s 所表示的棋盘上的格子是否为白色。这里假设字符串 s 的前两个字符…

Oracle之表空间迁移

问题背景&#xff1a;一个数据表随着时间的累积&#xff0c;导致所在表空间占用很高&#xff0c;里面历史数据可以清除&#xff0c;保留近2个月数据即可 首先通过delete删除了2个月以前的数据。 按网上的教程进行空间压缩&#xff0c;以下sql在表所在用户执行: -- 允许表重新…

Redis中pipeline(管道)详解

redis管道pipeline 举个例子&#xff1a; 小卖铺免费让你拿50瓶饮料&#xff0c;你是一次拿一瓶拿回家&#xff0c;还是打包一次或者多次拿回家&#xff1f; 概念 Redis管道(pipelining)是一种在客户端向服务端发送多个请求而不等待响应的技术。它可以显著提高Redis应用程序…

Mybatis 关联查询

在 MyBatis 中&#xff0c;关联查询&#xff08;也称为复杂映射&#xff09;是指将多个表的数据通过 SQL 查询和结果映射的方式&#xff0c;组合成一个或多个 Java 对象。这种查询方式用于处理实体之间的关系&#xff0c;如一对一、一对多和多对多关系。通过关联查询&#xff0…