Изображение логотипа EPPlus растягивается из-за увеличения ширины столбца - PullRequest
0 голосов
/ 12 апреля 2019

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

Вот как я хочу, чтобы это было RequiredImagelink

Но вот как это рендеринг ActualImageLink

Код рендеринга изображений

double imageColumnStartOffset = 0;
for (var i = 1; i < position.CurrentColumn; i++)
{
    imageColumnStartOffset += excelWorkSheet.Column(i).Width;
}

int rowKey = Thread.CurrentThread.ManagedThreadId; //Using the current thread id as the unique key. Any better ideas? If yes, feel free to change this :)
if (!ModifiedRowCollection.ContainsKey(rowKey))
{
    excelWorkSheet.Row(position.CurrentRow).Height = Pixel2Points(height);
    ModifiedRowCollection.Add(rowKey, position.CurrentRow);
}


image.SetPosition(Points2PixelRow((int)imageRowStartOffset), Points2PixelColumn((int)imageColumnStartOffset));
image.SetSize(width, height);

Таблица изображений Рисунок кода

if (cell.CellDataFormat == CellDataFormat.Image)
{
    Image image = null;

        if (((Image)cell.Value) != null)
        {
            //Its a stream
            image = (Image)cell.Value;
        }
        else
            image = null;



    if (image != null)
    {
        //excelWorkSheet.Drawings.AddPicture()

        var pic = excelWorkSheet.Drawings.AddPicture("Pic" + Guid.NewGuid(), image);

        pic.From.Column = pic.To.Column = position.CurrentColumn - 1;
        pic.From.Row = pic.To.Row = position.CurrentRow - 1;

        pic.SetPosition(pic.From.Row, 5, pic.From.Column, 5);

        excelWorkSheet.Row(position.CurrentRow).Height = pic.Image.Height;

        imageCollection.Add(new Dictionary<int, ExcelPicture>() { { position.CurrentColumn, pic } });


    }
}
if (i == (totalRows - 1)) 
  {     

      foreach (var image in imageCollection)
      {
          var column = image.Keys.FirstOrDefault();
          var pic = image[column];
          excelWorkSheet.Column(column).Width = 300/(7.5) +5;                           
          pic.SetSize(pic.Image.Width, pic.Image.Height);

      }    


      TableWidth += excelWorkSheet.Column(position.CurrentColumn).Width;                        
  }

Что я пробовал 1. Исправление размера столбца перед рисованием изображения. 2. Блокировка строки 3. Фактический размер логотипа составляет 188 * 56, я попытался уменьшить его до 100 * 56, тогда растяжение не произошло, я предполагаю, что растяжение происходит, только если размер изображения больше размера столбца по умолчанию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...