Добавление изображений в Excel с использованием EPPlus

Я пытаюсь добавить одно и то же изображение несколько раз в файл excel, используя EPPlus. Для этого я использую следующий код:

Image logo = Image.FromFile(path); ExcelPackage package = new ExcelPackage(info); var ws = package.Workbook.Worksheets.Add("Test Page"); for(int a = 0; a < 5; a++) { ws.Row(a*5).Height = 39.00D; var picture = ws.Drawings.AddPicture(a.ToString(), logo); picture.SetPosition(a*5, 0, 2, 0); } 

Все работает отлично, и все изображения правильно добавлены, но они растянуты вниз. Вот как должна выглядеть одна из картин:

введите описание изображения здесь

Но в Excel это выглядит так:

введите описание изображения здесь

Я должен resize каждой строки начала каждой картинки, но я не думаю, что это повлияет на нее. Будет ли способ добавить фотографии / делать то, что я пытаюсь сделать, или мне придется скопировать вставки изображений вручную? (Я использую изображение в качестве примера)

Благодарю.

    Я не уверен, что это лучшее решение, но, безусловно, обходной путь для вашей проблемы.

    Вот что я сделал:

     ExcelPackage package = new ExcelPackage(); var ws = package.Workbook.Worksheets.Add("Test Page"); for (int a = 0; a < 5; a++) { ws.Row(a * 5).Height = 39.00D; } for (int a = 0; a < 5; a++) { var picture = ws.Drawings.AddPicture(a.ToString(), logo); picture.SetPosition(a * 5, 0, 2, 0); } 

    Вот как это выглядит.

    введите описание изображения здесь

    По какой-то причине, когда у нас установлена ​​высота строки, она мешает высоте изображения.

    Это одно из решений, которое вы можете применить в C #.

     private void AddImage(ExcelWorksheet oSheet, int rowIndex, int colIndex, string imagePath) { Bitmap image = new Bitmap(imagePath); ExcelPicture excelImage = null; if (image != null) { excelImage = oSheet.Drawings.AddPicture("Debopam Pal", image); excelImage.From.Column = colIndex; excelImage.From.Row = rowIndex; excelImage.SetSize(100, 100); // 2x2 px space for better alignment excelImage.From.ColumnOff = Pixel2MTU(2); excelImage.From.RowOff = Pixel2MTU(2); } } public int Pixel2MTU(int pixels) { int mtus = pixels * 9525; return mtus; } 

    попробуй это

     Image logo = Image.FromFile(path); ExcelPackage package = new ExcelPackage(info); var ws = package.Workbook.Worksheets.Add("Test Page"); for(int a = 0; a < 5; a++) { ws.Row(a*5).Height = 39.00D; var picture = ws.Drawings.AddPicture(a.ToString(), logo); // xlMove disables the auto resizing picture.Placement = xlMove; //XLPlacement : xlMoveAndSize,xlMove,xlFreeFloating picture.SetPosition(a*5, 0, 2, 0); } 

    или

     Image logo = Image.FromFile(path); ExcelPackage package = new ExcelPackage(info); var ws = package.Workbook.Worksheets.Add("Test Page"); for(int a = 0; a < 5; a++) { ws.Row(a*5).Height = 39.00D; var picture = ws.Drawings.AddPicture(a.ToString(), logo); picture.From.Column = 0; picture.From.Row = a; picture.SetSize(120, 150); } 

    Перед сохранением документа добавьте следующее:

     foreach (ExcelPicture drawing in ws.Drawings) drawing.SetSize(100); 

    используйте приведенный ниже код для настройки изображения в ячейке excel:

      Image logo = Image.FromFile(path); ExcelPackage package = new ExcelPackage(info); var ws = package.Workbook.Worksheets.Add("Test Page"); for(int a = 0; a < 5; a++) { ws.Row(a*5).Height = 39.00D; var picture = ws.Drawings.AddPicture(a.ToString(), logo); picture.From.Column = 0; picture.From.Row = a; picture.To.Column=0;//end cell value picture.To.Row=a;//end cell value picture.SetSize(120, 150); } 

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

    Если вы хотите установить высоту строки до 39 пикселей, значит, вам нужно пройти 29.25 пункта (по формуле), которому 39.

     points = pixels * 72 / 96 

    Попробуй это.

    Interesting Posts
    Давайте будем гением компьютера.