当前位置: 首页 > news >正文

若依集成更好用的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.lryc.cn/news/501070.html

相关文章:

  • 去除背景 学习笔记
  • 我们来学mysql -- 隔离级别简介(原理篇)
  • 机器学习(4)Kmeans算法
  • Oracle之表空间迁移
  • 域渗透入门靶机之HTB-Cicada
  • ue5 motion matching
  • 【从零开始的LeetCode-算法】383. 赎金信
  • 记录模板学习(持续更新)
  • Android hid 数据传输(device 端 )
  • MaxEnt模型在物种分布模拟中如何应用?R语言+MaxEnt模型融合物种分布模拟、参数优化方法、结果分析制图与论文写作
  • 第3章:文本样式 --[CSS零基础入门]
  • mysql 架构详解
  • 无代码探索AI大模型:腾讯云函数计算的卓越实践
  • 解决Ubuntu在VMware关机时,老是一个光标在那里闪动几分钟,才能关机的问题
  • word poi-tl 图表功能增强,插入图表折线图、柱状图、饼状图
  • 常见网络钓鱼类型
  • 数字图像处理考研考点(持续更新)
  • Spring Cloud Alibaba:一站式微服务解决方案
  • ubuntu16.04部署dify教程
  • JavaWeb文件上传
  • 软件工程——期末复习(3)
  • apache的BeanUtils的Converter被相互污染覆盖问题
  • TCP的“可靠性”(上)
  • 超标量处理器设计笔记(5)虚拟存储器、地址转换、page fault
  • SparkSQL 读写数据攻略:从基础到实战
  • react 使用状态管理调用列表接口渲染列表(包含条件查询,统一使用查询按钮,重置功能),避免重复多次调用接口的方法
  • Stable Audio Open模型部署教程:用AI打造独家节拍,让声音焕发新活力!
  • 加油站-(贪心算法)
  • k8s-持久化存储PV与PVC(1)
  • Linux Red Hat Enterprise