本文主要介绍了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)!

C#和.NET运行时紧密合作,赋予开发者高效、强大且跨平台的开发能力。1)C#是一种类型安全且面向对象的编程语言,旨在与.NET框架无缝集成。2).NET运行时管理C#代码的执行,提供垃圾回收、类型安全等服务,确保高效和跨平台运行。

要开始C#.NET开发,你需要:1.了解C#的基础知识和.NET框架的核心概念;2.掌握变量、数据类型、控制结构、函数和类的基本概念;3.学习C#的高级特性,如LINQ和异步编程;4.熟悉常见错误的调试技巧和性能优化方法。通过这些步骤,你可以逐步深入C#.NET的世界,并编写高效的应用程序。

C#和.NET的关系是密不可分的,但它们不是一回事。C#是一门编程语言,而.NET是一个开发平台。C#用于编写代码,编译成.NET的中间语言(IL),由.NET运行时(CLR)执行。

C#.NET依然重要,因为它提供了强大的工具和库,支持多种应用开发。1)C#结合.NET框架,使开发高效便捷。2)C#的类型安全和垃圾回收机制增强了其优势。3).NET提供跨平台运行环境和丰富的API,提升了开发灵活性。

C#.NETisversatileforbothwebanddesktopdevelopment.1)Forweb,useASP.NETfordynamicapplications.2)Fordesktop,employWindowsFormsorWPFforrichinterfaces.3)UseXamarinforcross-platformdevelopment,enablingcodesharingacrossWindows,macOS,Linux,andmobiledevices.

C#和.NET通过不断的更新和优化,适应了新兴技术的需求。1)C#9.0和.NET5引入了记录类型和性能优化。2).NETCore增强了云原生和容器化支持。3)ASP.NETCore与现代Web技术集成。4)ML.NET支持机器学习和人工智能。5)异步编程和最佳实践提升了性能。

c#.netissutableforenterprise-levelapplications withemofrosoftecosystemdueToItsStrongTyping,richlibraries,androbustperraries,androbustperformance.however,itmaynotbeidealfoross-platement forment forment forment forvepentment offependment dovelopment toveloperment toveloperment whenrawspeedsportor whenrawspeedseedpolitical politionalitable,

C#在.NET中的编程过程包括以下步骤:1)编写C#代码,2)编译为中间语言(IL),3)由.NET运行时(CLR)执行。C#在.NET中的优势在于其现代化语法、强大的类型系统和与.NET框架的紧密集成,适用于从桌面应用到Web服务的各种开发场景。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

Dreamweaver Mac版
视觉化网页开发工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。