Java 中导入带图片的 Excel

news/2024/11/30 7:54:53/

在Java中使用EasyExcel库导入带有图片的Excel文件可以通过以下步骤完成:

  1. 添加依赖:首先,在您的Java项目中添加EasyExcel库的依赖项。您可以在Maven项目的pom.xml文件中添加以下依赖项: 

    <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.3.0</version>
    </dependency>
    
  2. 创建ExcelListener类:创建一个类来处理Excel数据的导入。该类需要继承com.alibaba.excel.context.AnalysisEventListener并重写invokedoAfterAllAnalysed方法。这些方法将在读取每行数据和完成读取后调用。

    import com.alibaba.excel.context.AnalysisContext;
    import com.alibaba.excel.event.AnalysisEventListener;
    import com.alibaba.excel.metadata.CellData;
    import com.alibaba.excel.metadata.CellExtra;
    import com.alibaba.excel.metadata.HeadMap;
    import com.alibaba.excel.metadata.property.ExcelContentProperty;
    import com.alibaba.excel.read.listener.ReadListener;
    import com.alibaba.excel.read.metadata.ReadSheet;
    import com.alibaba.excel.read.metadata.holder.ReadRowHolder;
    import com.alibaba.excel.read.metadata.property.ExcelReadHeadProperty;
    import com.alibaba.excel.read.metadata.property.ExcelReadSheetProperty;
    import com.alibaba.excel.util.StringUtils;
    import org.apache.commons.collections4.CollectionUtils;
    import org.apache.poi.ss.usermodel.Cell;
    import org.apache.poi.ss.usermodel.PictureData;
    import org.apache.poi.ss.usermodel.Row;import java.io.InputStream;
    import java.util.*;public class ExcelListener extends AnalysisEventListener<LinkedHashMap<Integer, String>> {private Map<Integer, PictureData> pictures; // 用于存储图片信息public void invokeHeadMap(Map<Integer, CellData> headMap, AnalysisContext context) {// 读取到表头时的回调方法,可以在这里处理表头数据}@Overridepublic void invoke(LinkedHashMap<Integer, String> data, AnalysisContext context) {// 读取到每一行数据时的回调方法,可以在这里处理每行数据// data是一个有序的Map,key为列索引,value为单元格数据// 通过data.get(columnIndex)可以获取指定列的数据// 例如:String cellData = data.get(0); // 获取第一列数据}@Overridepublic void doAfterAllAnalysed(AnalysisContext context) {// 完成读取后的回调方法,可以在这里进行一些后续操作}public void invokeCell(CellData cellData, AnalysisContext context) {// 读取到单元格数据时的回调方法,可以在这里处理单元格数据// cellData对象包含单元格的各种信息,如值、坐标等}public void onException(Exception exception, AnalysisContext context) {// 发生异常时的回调方法,可以在这里处理异常情况}public void setPictures(Map<Integer, PictureData> pictures) {this.pictures = pictures;}public Map<Integer, PictureData> getPictures() {return pictures;}
    }
    
  3. 导入带有图片的Excel:使用EasyExcel库读取带有图片的Excel文件。您可以使用EasyExcel.read()方法创建一个读取器,并通过read()方法指定要读取的Excel文件和ExcelListener的实例。

import com.alibaba.excel.EasyExcel;import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Map;public class ExcelImporter {public static void main(String[] args) throws Exception {String fileName = "path/to/your/excel/file.xlsx";InputStream inputStream = new FileInputStream(fileName);ExcelListener excelListener = new ExcelListener();EasyExcel.read(inputStream, null, excelListener).sheet().doRead();// 获取图片信息Map<Integer, PictureData> pictures = excelListener.getPictures();// 处理图片数据// 关闭输入流inputStream.close();}
}

在上面的示例中,您需要将"path/to/your/excel/file.xlsx"替换为实际的Excel文件路径。


http://www.ppmy.cn/news/368571.html

相关文章

诺基亚5800随心与LG GW620非常贴身竞争

诺基亚5800随心与LG GW620非常贴身竞争 诺基亚5800随心而LG GW620是被提供了大量的复杂的功能&#xff0c;到今天用户两款手机。这两个小工具有很多相似之处&#xff0c;以及不同点。 毫无疑问&#xff0c;手机已经成为大多数人的日常需求。一些手机品牌在手机的舞台上&#xf…

雷锋微视点:历时五年,塞班终被诺基亚始乱终弃

自2000年全球第一款基于Symbian系统的手机推出&#xff0c;Symbian系统逐渐建立了其在智能手机市场上的霸主地位。至2010年&#xff0c;各大手机厂商相继宣布抛弃Symbian平台&#xff0c;转战Android市场&#xff0c;此时仍与Symbian牵手的唯有Nokia一家。 自08年Nokia就收购了…

CC00021.LBCHAC——|NASSANDAS.V1|

一、存储分类-网络拓扑(存储和使用存储的服务设备的连接状态&#xff1b;存储连接方法分类) 1、存储相关名词 2、存储分类&#xff0c;网络拓扑 ### --- 存储分类&#xff0c;网络拓扑~~~ NAS&#xff1a;网络存储 ~~~ SAN&#xff1a;网络存储 ~~~ DAS&#xff1a…

[导入]笔记本”终极“散热方案

笔记本老了&#xff0c;三年了&#xff0c;电池不太行了&#xff0c;散热量也大。解决电池问题首先是能耗的问题&#xff0c;我把能够卸下来的光驱和读卡器都拆了&#xff0c;这下留了一个大长孔&#xff0c;很好的是这样散热问题也得到了解决&#xff0c;光驱的大孔和读卡器那…

如何将旧电脑变成文件存储服务器,免费的NAS系统,把旧电脑改造成NAS

关键词&#xff1a;FreeNAS&#xff0c;NAS&#xff0c;网络附属存储&#xff0c;网络附加存储&#xff0c;操作系统&#xff0c;利用旧电脑新买了电脑之后&#xff0c;是否在为旧电脑该如何处理而发愁呢&#xff1f;家里有多台电脑&#xff0c;组建起了局域网&#xff0c;却不…

MySQL数据库基础 11

第十一章 数据处理之增删改 1. 插入数据1.1 实际问题1.2 方式1&#xff1a;VALUES的方式添加1.3 方式2&#xff1a;将查询结果插入到表中 2. 更新数据3. 删除数据4. MySQL8新特性&#xff1a;计算列 1. 插入数据 1.1 实际问题 解决方式&#xff1a;使用 INSERT 语句向表中插入…

64位和32位相比优势是什么(一)

前置知识&#xff1a;程序是如何执行的&#xff1f; 一道常规的面试题&#xff1a;相比 32 位&#xff0c;64 位的优势是什么&#xff1f; 面试官考察这种类型的问题&#xff0c;主要是想看求职者是否有扎实的计算机基础&#xff0c;同时想知道求职者在工作中是否充满好奇&am…

【多线程与高并发】- 锁的机制与底层优化原理

锁的机制与底层优化原理 &#x1f604;生命不息&#xff0c;写作不止 &#x1f525; 继续踏上学习之路&#xff0c;学之分享笔记 &#x1f44a; 总有一天我也能像各位大佬一样 &#x1f3c6; 一个有梦有戏的人 怒放吧德德 &#x1f31d;分享学习心得&#xff0c;欢迎指正&#…