.NetCore 使用 NPOI 读取带有图片的excel数据

在.NetCore使用NPOI插件进行批量导入时,获取Excel中的所有的图片数据,存到集合中。

1.定义类PictureData

代码如下:

public class PictureData

{

public byte[] Data { get; set; }

}

2.数据集引用

using NPOI.XSSF.UserModel;

using NPOI.SS.UserModel;

using NPOI.XSSF.UserModel.Extensions;

npoi插件可以通过nuget安装或自己下载引用。

3.定义获取excel图片数据的方法GetDTWithImg

/// <summary>

/// 获取excel中图片数据

/// </summary>

/// <param name="path">文件路径</param>

/// <returns>list</returns>

private List<PictureData> GetDTWithImg(string path)

{

using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))

{

IWorkbook workbook = null;

ISheet sheet = null;

workbook = WorkbookFactory.Create(file);

sheet = workbook.GetSheet("Sheet1");

if (sheet == null)

{

sheet = workbook.GetSheetAt(0);

}

// 获取绘图对象

XSSFDrawing drawing = (XSSFDrawing)sheet.CreateDrawingPatriarch();

List<XSSFPicture> picturesInColumnA = new List<XSSFPicture>();

List<XSSFShape> shapes = drawing.GetShapes();

foreach (XSSFShape shape in shapes)

{

if (shape is XSSFPicture)

{

XSSFPicture picture = (XSSFPicture)shape;

XSSFClientAnchor anchor = (XSSFClientAnchor)picture.GetPreferredSize();

picturesInColumnA.Add(picture);

}

}

List<PictureData> pictureDataList = new List<PictureData>();

//将图片数据放到集合中

foreach (XSSFPicture picture in picturesInColumnA)

{

byte[] pictureData = picture.PictureData.Data;

PictureData data = new PictureData

{

Data = pictureData

};

pictureDataList.Add(data);

}

return pictureDataList;

}

}

通过该方法可以获取excel中的图片,将其转换成字节流存到集合中,方便后续对其进行操作。

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。

相关推荐
Roye_ack5 小时前
【项目实战 Day12】springboot + vue 苍穹外卖系统(Apache POI + 工作台模块 + Excel表格导出 完结)
java·spring boot·后端·excel·苍穹外卖
IccBoY12 小时前
Java采用easyexcel组件进行excel表格单元格的自动合并
java·开发语言·excel
The Future is mine13 小时前
.Net Core 在Linux系统下创建服务
linux·运维·.netcore
风车带走过往13 小时前
Excel 常用功能自救手册:遇到问题快速排查指南 (个人备忘版)
excel
跟着珅聪学java14 小时前
EasyExcel 读取 Excel 文件指南
excel
芭拉拉小魔仙1 天前
Vue项目中如何实现表格选中数据的 Excel 导出
前端·vue.js·excel
RE-19011 天前
Excel基础知识 - 导图笔记
数据分析·学习笔记·excel·思维导图·基础知识·函数应用
Love__Tay1 天前
【数据分析与可视化】2025年一季度金融业主要行业资产、负债、权益结构与增速对比
金融·excel·pandas·matplotlib
泉城老铁1 天前
导出大量数据时如何优化内存使用?SXSSFWorkbook的具体实现方法是什么?
spring boot·后端·excel
*长铗归来*2 天前
ASP.NET Core Web API 中控制器操作的返回类型及Swagger
后端·c#·asp.net·.netcore