好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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测试数据bine( "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测试数据bine(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测试数据bine(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://HdhCmsTestcnblogs测试数据/SweetMemory/p/6378775.html

dy("nrwz");

查看更多关于c# 应用NPOI获取Excel中的图片,保存至本地的算法的详细内容...

  阅读:106次