I'm writting code to Get All Images including Shapes from Excel (.xls and xlsx) using C# and NPOI(ver 2.2.1) Library. The purpose is to get all images including shapes from selected Excel file and then save it to specified directory.
After a while trial-error and browse any references, i'm able to get all Image from Excel using this code (I put code for read xls format),
- var lst = workbook.GetAllPictures();
- for (int i = 0; i < lst.Count; i++)
- {
- var pic = (HSSFPictureData)lst[i];
- byte[] data = pic.Data;
- /*Save Image From Byte[]*/
- }
But, i can't get the Shapes in Excel with that Code, so i'm trying to find any other method and finally i found some code that can get List of Images and Shapes that exist in Sheet of Excel,
here the snippet of code (also code for read xls format file),
- var dr = workbook.GetSheetAt(sht).DrawingPatriarch;
- HSSFPatriarch pat = (HSSFPatriarch)dr;
- var shape = pat.Children;
- int i = 0;
- foreach (var s in shape)
- {
- string patType = s.GetType().ToString();
- switch (patType)
- {
- case "NPOI.HSSF.UserModel.HSSFSimpleShape":
- {
- var simpleshape = (HSSFSimpleShape)s;
- /*Save Shape*/
- break;
- }
- case "NPOI.HSSF.UserModel.HSSFPicture":
- {
- var pic = (HSSFPicture)s;
- byte[] data = pic.PictureData.Data;
- /*Code to Save Image From Byte[]*/
- break;
- }
- default: break;
- }
- }
And when i put breakpoint on foreach statement and watch, it's show the list of Images and Shapes that i need to Save.
With that code, I'm able to Get and Save its Image data (HSSFPicture), But I can't find any Method or Properties for Converting or Saving Shape Data (HSSFSimpleShape) to Image.
My Question is, How can I Convert this Shape data to Image, and saving it to specified directory? Is there something wrong with the code that I write? Or maybe there is another solution (using NPOI of course) that i can use to get Shapes from Excel (xls or xlsx) file?
Bikesh SrivastavaPosted Sep 16, 2016, 3:44 AM
Hello,
I found some information pertaining to your request.
I do hope you take the time to READ the articles;
http://joymonscode.blogspot.com/2009/01/reading-image-from-excel-file.html
https://social.msdn.microsoft.com/Forums/office/en-US/6329ac07-7406-4549-bbed-5776f21c63cd/save-shapes-to-file-and-insert-editable-shapes-to-excel-later?forum=exceldev
Hope this Helps :)