User 9409695 Ответов: 0

Как преобразовать фигуру в изображение из excel (xls и xlsx) с помощью NPOI (C#)


Я пишу код, чтобы получить все изображения, включая фигуры, из Excel (в XLS и XLSX-файл) с помощью С# и NPOI (версия 2.2.1) Библиотека. Цель состоит в том, чтобы получить все изображения, включая фигуры, из выбранного файла Excel, а затем сохранить его в указанном каталоге.

Моя проблема в том, что я не могу найти никакого метода для преобразования этих данных формы из Excel в изображение и сохранения их в указанном каталоге? Что-то не так с кодом, который я пишу? Или, может быть, есть другое решение (используя NPOI конечно), который я могу использовать для получения фигур из файла Excel (xls или xlsx)?

Что я уже пробовал:

Через некоторое время проб-ошибок и просмотра любых ссылок я смог получить все изображения из Excel с помощью этого кода (я поставил код для чтения формата 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[]*/
}


Но я не могу получить фигуры в Excel с помощью этого кода, поэтому я пытаюсь найти любой другой метод и, наконец, я нашел какой-то код, который может получить список изображений и фигур, существующих в листе Excel,

вот фрагмент кода (также код для чтения файла формата xls),


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;
    }
}


И когда я ставлю точку останова на оператор foreach и смотрю, он показывает список изображений и фигур, которые мне нужно сохранить.

С помощью этого кода я могу получить и сохранить данные его изображения (HSSFPicture), Но я не могу найти никакого метода или свойств для преобразования или сохранения данных формы (HSSFSimpleShape) к Изображение.

0 Ответов