Comment convertir une forme en image à partir d'Excel (xls et xlsx) en utilisant NPOI (C #)

Je rédige un code pour get toutes les images, y compris des forms à partir de Excel ( .xls et xlsx ) à l'aide de la bibliothèque C # et NPOI (version 2.2.1 ). Le but est d'get toutes les images, y compris des forms à partir du file Excel sélectionné, puis de l'save dans un directory spécifié.

Après un certain time d'erreur d'essai et de parcourir toutes les references, je peux get toutes les images d'Excel à l'aide de ce code (j'ai mis le code pour le format read xls ),

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[]*/ } 

Mais, je ne peux pas get les forms dans Excel avec ce code, alors j'essaie de find toute autre méthode et enfin j'ai trouvé un code qui peut get une list d'images et de forms qui existent dans Sheet of Excel,

ici l'extrait du code (également le code pour le file au format read xls )

 var dr = workbook.GetSheetAt(sht).DrawingPasortingarch; HSSFPasortingarch pat = (HSSFPasortingarch)dr; var shape = pat.Children; int i = 0; foreach (var s in shape) { ssortingng patType = s.GetType().ToSsortingng(); 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; } } 

Et quand je place un point d'arrêt sur l'instruction foreach et la montre, il montre la list des images et des forms que j'ai besoin de sauvegarder.

Avec ce code, je peux get et save ses données d'image ( HSSFPicture ), mais je ne trouve aucune méthode ou propriété pour convertir ou sauvegarder des données de forme ( HSSFSimpleShape ) en image.

Ma question est: Comment puis-je convertir ces données de forme en image et la sauvegarder dans un directory spécifié? Est-ce que quelque chose ne va pas avec le code que j'écris? Ou peut-être existe-t-il une autre solution (en utilisant NPOI bien sûr) que je peux utiliser pour get des forms à partir du file Excel (xls ou xlsx) ?

J'ai essayé plusieurs autres bibliothèques jusqu'à présent:

EPPlus , juste Complatible avec Excel Higher ou Equal 2007 ( xlsx ), mais j'ai besoin d'autoriser xls , et EPPlus me donne une erreur si j'essaie de convertir le format xls téléchargé en xlsx à l' aide de System.IO (je publierai dans une autre question pour ça).

Excel.Interrop , il peut récupérer la forme et l'image que je veux, mais il faut que Microsoft Office soit installé sur une machine server, et en quelque sorte, ce n'est pas une option pour l'instant.