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

myexcel的使用

参考:

(1)api文档:https://www.bookstack.cn/read/MyExcel-2.x/624d8ce73162300b.md

(2)源代码:  https://github.com/liaochong/myexcel/issues

我:

(1)maven依赖

<dependency><!--excel--><groupId>com.github.liaochong</groupId><artifactId>myexcel</artifactId><version>3.7.1</version>
</dependency>

(2)myexcel工具类

import com.github.liaochong.myexcel.core.DefaultExcelBuilder;
import com.github.liaochong.myexcel.core.DefaultExcelReader;
import com.github.liaochong.myexcel.utils.AttachmentExportUtil;
import org.apache.poi.ss.usermodel.Workbook;import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;/*** MyExcel:导入工具*/
public class MyExcelUtils
{// 默认导入public static <T> List<T> defaultImport(InputStream stream, Class<T> clazz){List<T> list = new ArrayList<T>() {{try {DefaultExcelReader.of(clazz).sheet(0).rowFilter(row -> row.getRowNum() > 0) // 如无需过滤,可省略该操作,0代表第一行.readThen(stream ,(Consumer<T>)d -> add(d));} catch (Exception e) {if(e.getLocalizedMessage().contains("Duplicate key")){throw new RuntimeException("图片定位重复,单元格图片不可以越线");}if(e.getLocalizedMessage().contains("Java heap space")){throw new RuntimeException("excel文件太大,堆内存不够用");}throw new RuntimeException(e);}}};return list;}// 默认导出public static void defaultExport(HttpServletResponse response, List list, Class<?> clazz, String fileName) throws IOException{Workbook workbook = DefaultExcelBuilder.of(clazz).build(list);AttachmentExportUtil.export(workbook, (fileName == null || "".equals(fileName.trim())) ? "文件" : fileName, response);}
}

(3)实体类映射模板

@Data
@ExcelModel(sheetName = "商品导入模板", rowHeight = 50,style={"vertical-align:center"}, dateTimeFormat="yyyy-MM-dd HH:mm", dateFormat="yyyy-MM-dd", decimalFormat="#")
@EqualsAndHashCode(callSuper = false)
public class ProductExcelModel {@ExcelColumn(index = 0, title = "商品名称")private String title;@ExcelColumn(index = 1, title = "商品图片")private InputStream image;@IgnoreColumnprivate String result; // 导入反馈错误信息}

(4)导出excel模板

public void loadTemplate(HttpServletResponse response){List<ProductExcelModel> list = new ArrayList<>();ProductExcelModel model = new ProductExcelModel();model.setTitle("产品名称");model.setImage(new FileInputStream("xx.jpg"));list.add(model);ExcelExportBuilder.defaultExcelExport(response, list, ProductExcelModel.class, "商品导入模板");}

(5)解析excel文件内容

public ResultInfo parseExcel(MultipartFile file) throws Exception{List<ProductExcelModel> list = ExcelImportBuilder.defaultImport(file.getInputStream(), ProductExcelModel.class);for(ProductExcelModel model:list){String result = "";if(StringUtils.isBlank(model.getTitle())){result = result + "\n商品名称不能为空";}if(null == model.getImage()){result = result + "\n商品图片不能为空";}model.setResult(result);}return ResultInfo.valueOf(list);}

相关文章:

myexcel的使用

参考&#xff1a; &#xff08;1&#xff09;api文档&#xff1a;https://www.bookstack.cn/read/MyExcel-2.x/624d8ce73162300b.md &#xff08;2&#xff09;源代码&#xff1a; https://github.com/liaochong/myexcel/issues 我&#xff1a; &#xff08;1&#xff09;m…...

Unity 上好用的插件

PlayerMaker BehaviorDesigner Cinemachine Timeline Hybrid Addressable AssetBundle Blower Simple Zoom 大地图上缩放和平移使用ScrollRect的好效果实现...

Vivado - 远程调试 + 远程综合实现 + vmWare网络配置 + NFS 文件共享 + 使用 VIO 核

目录 1. 简介 2. VIO 配置 2.1 VIO IP 2.2 VIO 对比 ILA 3. VIO 示例 3.1 Led 3.1.1 工程配置 3.1.2 效果展示 3.2 Key 3.2.1 工程配置 3.2.1 效果展示 3.3 门控触发 3.3.1 工程配置 3.3.2 效果展示 4. 远程调试 4.1 配置目标主机 4.2 配置本机 4.3 vmWare 网…...

双臂机器人

目录 一、双臂机器人简介 二、双臂机器人系统的组成 三、双臂机器人面临的主要挑战 3.1 协调与协同控制问题 3.2 力控制与柔顺性问题 3.3 路径规划与轨迹优化问题 3.4 感知与环境交互 3.5 人机协作问题 3.6 能源与效率问题 3.7 稳定性与可靠性问题 四、双臂机器人…...

【Lua热更新】上篇

Lua 热更新 - 上篇 下篇链接&#xff1a;【Lua热更新】下篇 文章目录 Lua 热更新 - 上篇一、AssetBundle1.理论2. AB包资源加载 二、Lua 语法1. 简单数据类型2.字符串操作3.运算符4.条件分支语句5.循环语句6.函数7. table数组8.迭代器遍历9.复杂数据类型 - 表9.1字典9.2类9.3…...

Ubuntu批量修改文件名

文章目录 批量重命名文件&#xff1a;Ubuntu下使用find命令结合sed和mv参考 批量重命名文件&#xff1a;Ubuntu下使用find命令结合sed和mv 在日常开发和文件管理中&#xff0c;有时我们需要批量重命名一批文件&#xff0c;比如将文件名中的某个特定字符串替换为另一个字符串。…...

食家巷大烤馍:岁月沉淀下的麦香传奇

在繁华都市的街角巷尾&#xff0c;隐藏着许多不为人知的美食宝藏&#xff0c;食家巷大烤馍便是其中之一。它宛如一位低调的美食大师&#xff0c;默默散发着独特的魅力&#xff0c;用最质朴的味道&#xff0c;征服着每一个过往食客的味蕾。 初见食家巷大烤馍&#xff0c;你会被…...

harmony UI组件学习(1)

Image 图片组件 string格式&#xff0c;通常用来加载网络图片&#xff0c;需要申请网络访问权限:ohos.permission.INTERNET Image(https://xxx.png) PixelMap格式&#xff0c;可以加载像素图&#xff0c;常用在图片编辑中 Image(pixelMapobject) Resource格式&#xff0c;加…...

BTP Integration Suite CPI Apache Camel

官网文档&#xff1a; https://help.sap.com/docs/integration-suite/sap-integration-suite/what-is-sap-integration-suite CPI 云集成(CPI)有以下几个特性&#xff1a; SAP Cloud Integration通过消息交换支持端到端流程集成。 它基于Apache软件基金会的开源框架Camel。 …...

vitepress-打包SyntaxError: Element is missing end tag.

一、vitepress打包编译报错Element is missing end tag. 背景&#xff1a; 新增了一些笔记准备上传到git仓库&#xff0c;持续集成部署的时候&#xff0c;控制台报错了&#xff0c;错误信息如下&#xff1a; SyntaxError: Element is missing end tag. 仔细看了下控制台几乎没啥…...

【从零开始入门unity游戏开发之——C#篇21】C#面向对象的封装——`this`扩展方法、运算符重载、内部类、`partial` 定义分部类

文章目录 一、this扩展方法1、扩展方法的基本语法2、使用扩展方法3、扩展方法的注意事项5、扩展方法的限制6、总结 二、运算符重载1、C# 运算符重载2、运算符重载的基本语法3. 示例&#xff1a;重载加法运算符 ()4、使用重载的运算符5、支持重载的运算符6、不能重载的运算符7、…...

Java进程占用的内存有哪些部分?

大家好&#xff0c;我是锋哥。今天分享关于【Java进程占用的内存有哪些部分?】面试题。希望对大家有帮助&#xff1b; Java进程占用的内存有哪些部分? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Java进程在运行时&#xff0c;会将内存划分为多个区域&#xf…...

【华为OD机试真题】【2024年E卷】数值同化-队列BFS(C++/Java/Python)

文章目录 分值&#xff1a;200题目描述思路复杂度分析AC 代码 分值&#xff1a;200 题目描述 存在一个 m * n 的 二维数组只&#xff0c;其成员取值范围为0, 1, 2。其中值为1的元素具备同化特性&#xff0c;每经过1S&#xff0c;将上下左右值为0的元素同化为1。而值为2的元素…...

“魔法糖果盒的秘密:用朴素贝叶斯算法猜糖果颜色”

想象一下&#xff0c;你有一个神奇的糖果盒&#xff0c;这个糖果盒里有两种糖果&#xff1a;红色的和蓝色的。你闭上眼睛&#xff0c;从盒子里拿出一个糖果&#xff0c;然后尝一尝&#xff0c;你想知道这个糖果是红色的还是蓝色的。朴素贝叶斯算法就像是一个魔法规则&#xff0…...

linux中docker命令大全

基本命令 docker pull 拉取镜像 docker pull docker push 推送镜像到DockerRegistry docker push docker images 查看本地镜像 docker images docker rmi 删除本地镜像 docker rmi docker run 创建并运行容器&#xff08;不能重复创建&#xff09; docker run d…...

Python `str.strip()` 的高级用法详解

Python str.strip 的高级用法详解 1. str.strip() 的基本用法2. str.strip() 的高级用法2.1 移除指定字符2.2 移除多个指定字符2.3 移除换行符和制表符2.4 结合正则表达式的高级处理 3. lstrip() 和 rstrip() 的用法3.1 lstrip()&#xff1a;移除左端字符3.2 rstrip()&#xff…...

[蓝桥杯 2019 国 B] 排列数

目录 前言 题解 思路 疑问 解答 前言 对于本篇文章是站在别人的基础之上来写的&#xff0c;对于这道题作为2019年国赛B组的最难的一题&#xff0c;他的难度肯定是不小的&#xff0c;这道题我再一开始接触的时候连思路都没有&#xff0c;也是看了两三遍别人发的题解&#x…...

[bug] StarRocks borker load意向之外的bug

意向之外&#xff0c;又清理之中 背景&#xff1a; StarRocks各方面碾压相同类型的数据库&#xff0c;最近我们要从生成HIVE导历史数据&#xff08;ORC格式&#xff09;到StarRocks&#xff0c;前期小测一下&#xff0c;在测试是没问题&#xff0c;上生产先导2个月的数据&…...

2025年前端面试热门题目——HTML|CSS|Javascript|TS知识

以下是对这些 HTML 面试问题的详细解答&#xff1a; 1. HTML 的 src 和 href 属性有什么区别? src (Source) 属性&#xff1a; 用于嵌入资源&#xff0c;例如图像、脚本或 iframe。加载资源时&#xff0c;当前页面的加载会暂停&#xff0c;直到资源加载完成。常用于 <img&g…...

Linux中部署项目

1.下载JDK17 进入 /usr/local 目录&#xff0c;创建 java 文件夹。并将 JDK17 上传到 java 目录下。 上传成功后&#xff0c;通过cd命令进入Java文件夹目录&#xff0c;解压 JDK17 压缩包&#xff0c;命令 unzip zulu17.44.53-ca-jdk17.0.8.1-linux_x64.zip。 如果报错说 u…...

别急着加内存!PyTorch报错‘DefaultCPUAllocator: not enough memory’的另类解法(附一键修复脚本)

别急着加内存&#xff01;PyTorch报错‘DefaultCPUAllocator: not enough memory’的另类解法 当你看到PyTorch抛出RuntimeError: DefaultCPUAllocator: not enough memory时&#xff0c;第一反应可能是检查任务管理器——然后发现物理内存明明还剩大半&#xff0c;这个报错就显…...

开题不是写作文,是做设计——百考通AI助你交出一份真实可行的研究蓝图

开题报告是毕业论文或学位研究的“第一道学术关卡”&#xff0c;它不仅需要明确“研究什么”“为何研究”&#xff0c;更要清晰规划“如何研究”。然而&#xff0c;许多学生在撰写过程中常因经验不足而陷入困境&#xff1a;选题空泛、问题意识薄弱、文献综述缺乏主线、研究方法…...

UMI 采集技术落地应用 核数聚助力人形机器人快速迭代

在具身智能从实验室走向产业落地的关键期&#xff0c;数据饥渴已成为行业公认的核心瓶颈。传统真机遥操作采集成本高、效率低、泛化性差&#xff0c;仿真数据又存在物理真实性不足的问题。此时&#xff0c;UMI&#xff08;Universal Manipulation Interface&#xff0c;通用操作…...

TI AM64x 5路原生千兆网口:工业物联网确定性网络与多核异构计算实战

1. 项目概述&#xff1a;为什么我们需要5路原生千兆网口&#xff1f;在工业现场摸爬滚打十几年&#xff0c;我见过太多因为网络接口“捉襟见肘”而导致的尴尬局面。想象一下&#xff0c;一个产线控制柜里&#xff0c;PLC、视觉系统、多台伺服驱动器、HMI触摸屏&#xff0c;还有…...

这个AI助手不让你教它,它自己来了解你

这个AI助手不让你教它&#xff0c;它自己来了解你OpenHuman&#xff1a;9700 Star&#xff0c;GitHub霸榜的秘密最近GitHub Trending上冒出来一个项目&#xff0c;连续霸榜多天&#xff0c;Star数蹭蹭往上涨。我点进去看了一眼&#xff0c;思路跟之前那些Agent工具完全不一样。…...

钉钉里藏了个 AI 员工?OpenClaw 接入玩法深度拆解

​前言 本文将指导您如何将OpenClaw工具与钉钉企业内部机器人进行无缝对接&#xff0c;实现业务信息和任务的自动化同步&#xff0c;有效提升团队协作效率。我们提供了完整的接入流程指南&#xff0c;包含详细的操作步骤、常见问题解决方案以及实用优化技巧&#xff0c;帮助开…...

Photoshop图层批量导出终极指南:如何快速将图层导出为独立文件

Photoshop图层批量导出终极指南&#xff1a;如何快速将图层导出为独立文件 【免费下载链接】Photoshop-Export-Layers-to-Files-Fast This script allows you to export your layers as individual files at a speed much faster than the built-in script from Adobe. 项目地…...

AD9361配置避坑指南:从UART调试到FLASH固化的全流程实战(Verilog源码分析)

AD9361纯逻辑配置实战&#xff1a;从UART调试到FLASH固化的工程化解决方案 在无线通信系统开发中&#xff0c;AD9361作为一款高度集成的射频收发器&#xff0c;其配置方式直接关系到项目开发效率。对于需要脱离处理器依赖、追求极致实时性的场景&#xff0c;纯FPGA逻辑(PL)配置…...

Git提交者信息填错了?别慌,手把手教你用config命令修正(全局/本地/取消设置全攻略)

Git提交者信息填错了&#xff1f;别慌&#xff0c;手把手教你用config命令修正&#xff08;全局/本地/取消设置全攻略&#xff09; 刚提交完代码到Git仓库&#xff0c;突然发现用户名和邮箱填错了&#xff1f;别担心&#xff0c;这种情况几乎每个开发者都遇到过。提交者信息错误…...

Python 浅拷贝与深拷贝:为什么我改了 b,a 也跟着变了?

Python 浅拷贝与深拷贝&#xff1a;为什么我改了 b&#xff0c;a 也跟着变了&#xff1f; 在 Python 中&#xff0c;列表、字典、集合这类对象都属于可变对象。 也正因为它们“可变”&#xff0c;所以在复制数据时&#xff0c;经常会遇到一个非常经典的问题&#xff1a;明明我改…...