c\#NPOI 를 사용 하여 Excel 의 그림 을 가 져 와 로 컬 에 저장 하 는 알고리즘

3037 단어 c#npoi
요구:엑셀 의 그림 을 읽 고 지정 한 경로 로 저장 합 니 다.
생각:  NPOI 에서 GetAllPictures()방법 으로 이미지 정 보 를 얻 기
단계:
1.Windows 창 프로그램 새로 만 들 기
2.데스크 톱 에 엑셀 을 새로 만 들 고 그림 두 장 을 붙 입 니 다.
 다음 그림:

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 류 이기 때문에 대응 하 는 엑셀 은 2003 년 이전(2003 포함)버 전 이 어야 합 니 다.확장 자 는'xls'입 니 다. 
HSSFWorkbook:Excel 2003 이전(2003 포함)을 작 동 하 는 버 전 입 니 다.확장 자 는.xls 입 니 다.
XSSFWorkbook:Excel 2007+를 조작 하 는 버 전 입 니 다.확장 자 는.xlsx 입 니 다.
이상 은 본 고의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.또한 저 희 를 많이 지지 해 주시 기 바 랍 니 다!

좋은 웹페이지 즐겨찾기