要求:读取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 = ;
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

             

版权声明:本文为博主原创文章,转载请注明出处。http://www.cnblogs.com/SweetMemory/p/6378775.html

c# 应用NPOI 获取Excel中的图片,保存至本地的算法的更多相关文章

  1. 使用NPOI从Excel中提取图片及图片位置信息

    问题背景: 话说,在ExcelReport的开发过程中,有一个比较棘手的问题:怎么复制图片呢? 当然,解决这个问题的第一步是:能使用NPOI提取到图片及图片的位置信息.到这里,一切想法都很顺利.但NP ...

  2. 使用Npoi向Excel中插入图片

    先把数据库中的数据都导入到Excel表格中,把图片地址的路径全部转成绝对路径. 使用Npoi读取刚导出的Excle表格,把图片那个单元格的图片路径读出来,然后用文件流读取图片,然后通过Npoi把图片放 ...

  3. 获取Excel中的图片

    如下图,上传要获取这里面的图片,而又不能直接选择,怎么办呢? 1.首先复制一份Excel文件命名copy.xlsx 2.修改copy.xlsx文件的后缀名变成copy.rar 3.解压copy.rar ...

  4. 将ImageView中的图片保存到本地相冊

    private void SaveImageToSysAlbum() { if (FileUtil.isSdCardExist()) { BitmapDrawable bmpDrawable = (B ...

  5. 在 Excel 中设置图片

    package com.smbea.demo.excel; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStr ...

  6. 利用POI获取Excel中图片和图片位置

    利用POI获取Excel中图片和图片位置(支持excel2003or2007多sheet) 转自:http://blog.csdn.net/delongcpp/article/details/8833 ...

  7. java POI实现向Excel中插入图片

          做Web开发免不了要与Excel打交道.今天老大给我一个任务-导出Excel.开始想的还是蛮简单的,无非就是查找,构建Excel,response下载即可.但是有一点不同,就是要加入图片, ...

  8. Python读取excel中的图片

    作为Java程序员,Java自然是最主要的编程语言.但是Java适合完成大型项目,对于平时工作中小的工作任务,需要快速完成,易于修改和调试,使用Java显得很繁琐,需要进行类的设计,打成jar包,出现 ...

  9. java 在Excel中插入图片 POI实现

    一.POI简介 Jakarta POI 是apache的子项目,目标是处理ole2对象.它提供了一组操纵Windows文档的Java API 目前比较成熟的是HSSF接口,处理MS Excel(97- ...

随机推荐

  1. php 设计模式系列(一)

    参考文章:http://duchengjiu.iteye.com/blog/2227452 多态代码 // 多态, 在JAVA中是这样用的, 其实在PHP当中可以自然消除, 因为参数是动态的, 你传什 ...

  2. DMLC深度机器学习框架MXNet的编译安装

    这篇文章将介绍MXNet的编译安装. MXNet的编译安装分为两步: 首先,从C++源码编译共享库(libmxnet.so for linux,libmxnet.dylib for osx,libmx ...

  3. 使用Javascript/jQuery将javascript对象转换为json格式数据 - 海涛的CSDN博客 - 博客频道 - CSDN.NET

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

  4. OPENCV图像特征点检测与FAST检测算法

    前面描述角点检测的时候说到,角点其实也是一种图像特征点,对于一张图像来说,特征点分为三种形式包括边缘,焦点和斑点,在OPENCV中,加上角点检测,总共提供了以下的图像特征点检测方法 FAST SURF ...

  5. iOS开发——获取本设备IP

    不说废话,直接上代码. #import <ifaddrs.h> #import <arpa/inet.h> - (NSString *)getIPAddress { NSStr ...

  6. 怎么把自己电脑上开发的项目发布到自己电脑IIS上面?

    windowsxp中: 步骤: 1.新建一个文件夹,把项目发布到里面(发布的时候需要注意的是: ) 注意:发布方法要选择:文件系统 目标位置选择:你新建来发布的那个文件夹名称 2.在IIS中新建网站 ...

  7. java学习(三) java 中 mongodb的各种操作

    一. 常用查询: 1. 查询一条数据:(多用于保存时判断db中是否已有当前数据,这里 is  精确匹配,模糊匹配 使用 regex...) public PageUrl getByUrl(String ...

  8. java 读写excle

    2014-04-16 20:38:20 java读写excel 晚上打算研究如何c来编写

  9. gridview属性

    1.列头充满:AutoSizeColumnsMode, Fill. 2.列内容居中:ColumnHeadersDefaultCellStyle, MiddleCenter. 3.行内容居中:RowsD ...

  10. Android组件生命周期(三)

    Android系统试图尽可能长地保持一个应用程序进程,但是当内存低时它最终还是需要移除旧的进程.为了决定保持哪个进程及杀死哪个进程,Android将每个进程放入一个基于运行于其中的组件的重要性等级和这 ...