最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
c# 应用NPOI获取Excel中的图片,保存至本地的算法
时间:2017-03-24 编辑:简简单单 来源:一聚教程网
要求:读取excel中的图片,保存到指定路径
思路: 利用NPOI中 GetAllPictures()方法获取图片信息
步骤:
1.新建一个Windows窗体应用程序
2.桌面新建一个excel,贴入两张图片
如下图:
3.在Form中拖入一个button
4.点击button,在点击事件方法中写入,要读取图片的方法:ExcelToImage
点击事件方法如下:
代码如下 | 复制代码 |
privatestringexclePath =@"C:\users\lenovo\Desktop\testPic.xls"; privatevoidbutton2_Click(objectsender, EventArgs e) { List stringsavePath = Path.Combine("E:\\","pic"); if(!Directory.Exists(savePath))//判断是否存在保存文件夹,没有则新建 Directory.CreateDirectory(savePath); boolresult = ExcelToImage(exclePath, savePath,reflistpath); if(result) MessageBox.Show("导出成功"); else MessageBox.Show("导出失败"); } |
5.其中ExcelToImage方法事件如下:
代码如下 | 复制代码 |
/// /// 从excel获取图片 /// /// 文件路径 /// 图片保存路径 /// 返回保存的图表地址list /// privateboolExcelToImage(stringfilepath,stringsavepath,refList { try { using(FileStream fsReader = File.OpenRead(filepath)) { HSSFWorkbook wk =newHSSFWorkbook(fsReader); IList pictures = wk.GetAllPictures(); inti = 0; foreach(HSSFPictureData picinpictures) { //if (pic.Data.Length == 19504) //跳过不需要保存的图片,其中pic.data有图片长度 // continue; stringext = pic.SuggestFileExtension();//获取扩展名 stringpath =string.Empty; if(ext.Equals("jpg")) { Image jpg = Image.FromStream(newMemoryStream(pic.Data));//从pic.Data数据流创建图片 path = Path.Combine(savepath,string.Format("pic{0}.jpg", i++)); jpg.Save(path);//保存 } elseif(ext.Equals("png")) { Image png = Image.FromStream(newMemoryStream(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) { returnfalse;
} returntrue; } |
结果:
注明:本算法 HSSFWorkbook 类,所以对应的excel应为2003以前(包括2003)的版本,扩展名是.xls。
HSSFWorkbook:是操作Excel2003以前(包括2003)的版本,扩展名是.xls
XSSFWorkbook:是操作Excel2007 +的版本,扩展名是.xlsx
相关文章
- C#复制数组的两种方式及效率比较解读 10-24
- ASP.NET Identity用法解析 10-24
- ASP.NET MVC使用Identity增删改查用户介绍 10-24
- C语言中atoi函数模拟实现介绍 10-18
- .Net反向代理组件Yarp用法介绍 10-10
- .NET使用YARP通过编码方式配置域名转发实现反向代理教程 10-10