.NET使用NPOI實現(xiàn)讀取帶有圖片的excel數(shù)據(jù)
前言
在.net使用npoi插件進(jìn)行批量導(dǎo)入時,獲取excel中的圖片數(shù)據(jù),存到集合中。
使用步驟
1.定義類PictureData
代碼如下:
public class PictureData
{
public byte[] Data { get; set; }
}
2.數(shù)據(jù)集引用
using NPOI.XSSF.UserModel; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel.Extensions;
npoi插件需要自己下載。
3.定義獲取excel圖片數(shù)據(jù)的方法GetDTWithImg
/// <summary>
/// 獲取excel中圖片數(shù)據(jù)
/// </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>();
//將圖片數(shù)據(jù)放到集合中
foreach (XSSFPicture picture in picturesInColumnA)
{
byte[] pictureData = picture.PictureData.Data;
PictureData data = new PictureData
{
Data = pictureData
};
pictureDataList.Add(data);
}
return pictureDataList;
}
}
總結(jié)
通過該方法可以獲取excel中的圖片,將其轉(zhuǎn)換成字節(jié)流存到集合中,方便后續(xù)對其進(jìn)行操作。
到此這篇關(guān)于.NET使用NPOI實現(xiàn)讀取帶有圖片的excel數(shù)據(jù)的文章就介紹到這了,更多相關(guān).NET NPOI讀取帶圖片excel數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
AspNet Core上實現(xiàn)web定時任務(wù)實例
在本篇文章里小編給大家分享了關(guān)于AspNet Core上實現(xiàn)web定時任務(wù)的實例內(nèi)容,有興趣的朋友們學(xué)習(xí)參考下。2019-02-02
使用 Salt + Hash 將密碼加密后再存儲進(jìn)數(shù)據(jù)庫
如果你需要保存密碼(比如網(wǎng)站用戶的密碼),你要考慮如何保護(hù)這些密碼數(shù)據(jù),象下面那樣直接將密碼寫入數(shù)據(jù)庫中是極不安全的,因為任何可以打開數(shù)據(jù)庫的人,都將可以直接看到這些密碼2012-12-12
創(chuàng)建基于ASP.NET的SMTP郵件服務(wù)的具體方法
Asp.net在System.Web.Mail名稱空間中有一個發(fā)送email的內(nèi)建類,但這僅是cdosys的一個假象。開發(fā)者能使用一個替代的它smtp郵件服務(wù)。在這篇文章里面,我將會展示如何創(chuàng)建一個用于asp.net的功能齊全的smtp郵件服務(wù)2013-11-11
TreeView無刷新獲取text及value實現(xiàn)代碼
這篇文章介紹了TreeView無刷新獲取text及value實現(xiàn)代碼,有需要的朋友可以參考一下2013-10-10
詳解c# .net core 下的網(wǎng)絡(luò)請求
本篇文章主要介紹了詳解c# .net core 下的網(wǎng)絡(luò)請求,大致介紹下在.net core 下如何進(jìn)行http請求,主要仍然是GET和POST方法,有興趣的可以了解下2017-05-05
.NET6+Quartz實現(xiàn)定時任務(wù)的示例詳解
在實際工作中,經(jīng)常會有一些需要定時操作的業(yè)務(wù),如:定時發(fā)郵件,定時統(tǒng)計信息等,那么如何實現(xiàn)才能使得我們的項目整齊劃一呢?本文通過一些簡單的小例子,簡述在.Net6+Quartz實現(xiàn)定時任務(wù)的一些基本操作,如有不足之處,還請指正2023-03-03
.NET 排序 Array.Sort<T> 實現(xiàn)示例
System.Array.Sort<T> 是.NET內(nèi)置的排序方法, 本文就詳細(xì)的介紹一下具體使用,具有一定的參考價值,感興趣的可以了解一下2021-09-09

