当前位置: 首页 > 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);}

http://www.lryc.cn/news/507593.html

相关文章:

  • Unity 上好用的插件
  • Vivado - 远程调试 + 远程综合实现 + vmWare网络配置 + NFS 文件共享 + 使用 VIO 核
  • 双臂机器人
  • 【Lua热更新】上篇
  • Ubuntu批量修改文件名
  • 食家巷大烤馍:岁月沉淀下的麦香传奇
  • harmony UI组件学习(1)
  • BTP Integration Suite CPI Apache Camel
  • vitepress-打包SyntaxError: Element is missing end tag.
  • 【从零开始入门unity游戏开发之——C#篇21】C#面向对象的封装——`this`扩展方法、运算符重载、内部类、`partial` 定义分部类
  • Java进程占用的内存有哪些部分?
  • 【华为OD机试真题】【2024年E卷】数值同化-队列BFS(C++/Java/Python)
  • “魔法糖果盒的秘密:用朴素贝叶斯算法猜糖果颜色”
  • linux中docker命令大全
  • Python `str.strip()` 的高级用法详解
  • [蓝桥杯 2019 国 B] 排列数
  • [bug] StarRocks borker load意向之外的bug
  • 2025年前端面试热门题目——HTML|CSS|Javascript|TS知识
  • Linux中部署项目
  • 在 CentOS 上安装 MySQL 8
  • gradle项目下载依赖报错
  • solon 集成 activemq-client (sdk)
  • LRU 缓存
  • 使用ZLMediaKit 开源项目搭建RTSP 服务器
  • 数组晨考2day08
  • 《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》简介
  • 麒麟操作系统服务架构保姆级教程(二)sersync、lsync备份和NFS持久化存储
  • 将OBJ或GLB文件转换为3DTiles
  • Flink DataStream API 编程指南
  • tryhackme-Pre Security-HTTP in Detail(HTTP的详细内容)