c# 应用NPOI获取Excel中的图片,保存至本地的算法的详细介绍
本文主要介绍了c# 应用NPOI获取Excel中的图片,保存至本地的算法。具有很好的参考价值,下面跟着小编一起来看下吧
要求:读取excel中的图片,保存到指定路径
思路: 利用NPOI中 GetAllPictures()方法获取图片信息
步骤:
1.新建一个Windows窗体应用程序
2.桌面新建一个excel,贴入两张图片
如下图:
3.在Form中拖入一个button
4.点击button,在点击事件方法中写入,要读取图片的方法:ExcelToImage
点击事件方法如下:
private string exclePath = @"C:\users\lenovo\Desktop\testPic.xls"; private void button2_Click(object sender, EventArgs e) { List<string> listpath = new List<string>{}; string savePath = Path.Combine("E:\\","pic"); if(!Directory.Exists(savePath))//判断是否存在保存文件夹,没有则新建 Directory.CreateDirectory(savePath); bool result = ExcelToImage(exclePath, savePath, ref listpath); if(result) MessageBox.Show("导出成功"); else MessageBox.Show("导出失败"); }
5.其中ExcelToImage方法事件如下:
/// <summary> /// 从excel获取图片 /// </summary> /// <param name="filepath">文件路径</param> /// <param name="savepath">图片保存路径</param> /// <param name="listPath">返回保存的图表地址list</param> /// <returns>保存图片是否成功</returns> private bool ExcelToImage(string filepath,string savepath,ref List<string> listPath) { try { using (FileStream fsReader = File.OpenRead(filepath)) { HSSFWorkbook wk = new HSSFWorkbook(fsReader); IList pictures = wk.GetAllPictures(); int i = 0; foreach (HSSFPictureData pic in pictures) { //if (pic.Data.Length == 19504) //跳过不需要保存的图片,其中pic.data有图片长度 // continue; string ext = pic.SuggestFileExtension();//获取扩展名 string path = string.Empty; if (ext.Equals("jpg")) { Image jpg = Image.FromStream(new MemoryStream(pic.Data));//从pic.Data数据流创建图片 path = Path.Combine(savepath, string.Format("pic{0}.jpg", i++)); jpg.Save(path);//保存 } else if (ext.Equals("png")) { Image png = Image.FromStream(new MemoryStream(pic.Data)); path = Path.Combine(savepath, string.Format("pic{0}.png", i++)); png.Save(path); } if (!string.IsNullOrEmpty(path)) listPath.Add(path); } } } catch (Exception ex) { return false; } return true; }
结果:
注明:本算法 HSSFWorkbook 类,所以对应的excel应为2003以前(包括2003)的版本,扩展名是.xls。
HSSFWorkbook:是操作Excel2003以前(包括2003)的版本,扩展名是.xls
XSSFWorkbook:是操作Excel2007 +的版本,扩展名是.xlsx
以上就是c# 应用NPOI获取Excel中的图片,保存至本地的算法的详细介绍的内容,更多相关内容请关注PHP中文网(www.php.cn)!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Panduan untuk Active Directory dengan C#. Di sini kita membincangkan pengenalan dan cara Active Directory berfungsi dalam C# bersama-sama dengan sintaks dan contoh.

Panduan untuk Penjana Nombor Rawak dalam C#. Di sini kita membincangkan cara Penjana Nombor Rawak berfungsi, konsep nombor pseudo-rawak dan selamat.

Panduan untuk Paparan Grid Data C#. Di sini kita membincangkan contoh cara paparan grid data boleh dimuatkan dan dieksport daripada pangkalan data SQL atau fail excel.

Panduan untuk Pensirian C#. Di sini kita membincangkan pengenalan, langkah-langkah objek siri C#, kerja, dan contoh masing-masing.

Panduan Nombor Perdana dalam C#. Di sini kita membincangkan pengenalan dan contoh nombor perdana dalam c# bersama dengan pelaksanaan kod.

Panduan kepada Corak dalam C#. Di sini kita membincangkan pengenalan dan 3 jenis Corak teratas dalam C# bersama-sama dengan contoh dan pelaksanaan kodnya.

Panduan untuk Faktorial dalam C#. Di sini kita membincangkan pengenalan kepada faktorial dalam c# bersama-sama dengan contoh dan pelaksanaan kod yang berbeza.

Perbezaan antara multithreading dan asynchronous adalah bahawa multithreading melaksanakan pelbagai benang pada masa yang sama, sementara secara tidak sengaja melakukan operasi tanpa menyekat benang semasa. Multithreading digunakan untuk tugas-tugas yang berintensifkan, sementara asynchronously digunakan untuk interaksi pengguna. Kelebihan multi-threading adalah untuk meningkatkan prestasi pengkomputeran, sementara kelebihan asynchronous adalah untuk tidak menghalang benang UI. Memilih multithreading atau asynchronous bergantung kepada sifat tugas: tugas-tugas intensif pengiraan menggunakan multithreading, tugas yang berinteraksi dengan sumber luaran dan perlu menyimpan respons UI menggunakan asynchronous.
