.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中的图片,将其转换成字节流存到集合中,方便后续对其进行操作。

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

相关推荐
有趣的我2 小时前
vim的操作
编辑器·vim·excel
woniu_maggie3 小时前
SAP EXCEL DOI 详解
开发语言·后端·excel
Dickson4 小时前
如何批量拆分Excel工作表或按行拆分Excel表格 - Excel拆分器使用方法
excel·excel拆分器·拆分excel·拆分excel工作表·按行拆分excel
inxunoffice8 小时前
批量将文本文件转换为 Word/PDF/Excel/图片等其它格式
pdf·word·excel
赵孝正11 小时前
自动用 Excel 转 .CSV 为 .xlsx 的原理
excel
互联网上的猪11 小时前
Excel时间类型函数(包括today、date、eomonth、year、month、day、weekday、weeknum、datedif)
笔记·学习·excel
专注VB编程开发20年14 小时前
无需安装Office进行 Word、Excel操作的微软开发库
microsoft·word·excel
全栈小516 小时前
【C#】.net core 6.0 依赖注入常见问题之一,在构造函数使用的类,都需要注入到容器里,否则会提示如下报错,让DeepSeek找找原因,看看效果
c#·.netcore·依赖注入·deepseek
hello_simon1 天前
在线Excel 转换为 txt ,超方便超易用软件,在线转换,大力提升工作效率
excel
云只上1 天前
前端界面在线excel编辑器 。node编写post接口获取文件流,使用传参替换表格内容展示、前后端一把梭。
前端·javascript·node.js·excel