Странное поведение при установке высоты строки на EPPlus

Я создаю файл Excel с EEPlus под приложением MVC-5 C#. Все идет по плану, пока я не установлю высоту в строке (чтобы изображение могло поместиться).

я загружаю de изображения и устанавливаю высоту в столбце 20, например:

Image cfPhoto = null;
Bitmap cfBm = null;
ExcelPicture pictureCf = null;
var photoInitialColumn = 0;
i++;
completedFormPhotos.ForEach(delegate(CompletedFormPhoto cfP)
{
    cfPhoto = Image.FromFile(HostingEnvironment.MapPath("~/Content/Images/FormPhotos/" + cfP.Id + ".jpg"));
    cfBm = new Bitmap(cfPhoto, new Size(215, 170));
    pictureCf = worksheet.Drawings.AddPicture(cfP.Id.ToString(), cfBm);
    pictureCf.SetPosition(i+1, 0, photoInitialColumn, 10);
    worksheet.Cells[_alpha[photoInitialColumn] + (i + 3) + ':' + _alpha[photoInitialColumn + 1] + (i + 3)].Merge = true;
    worksheet.Cells[_alpha[photoInitialColumn] + (i + 3) + ':' + _alpha[photoInitialColumn + 1] + (i + 3)].Value = cfP.comment;
    worksheet.Cells[_alpha[photoInitialColumn] + (i + 3) + ':' + _alpha[photoInitialColumn + 1] + (i + 3)].Style.WrapText = true;
    photoInitialColumn += 2;
    //HERE I SET THE HEIGHT. At this point, i == 18 
    worksheet.Row(i+2).Height = 180;
});

но у меня есть логотип компании в верхней части файла Excel (ячейка A1), который также изменяется (по высоте). Это определяется следующим образом:

Image _keyLogo = Image.FromFile(HostingEnvironment.MapPath("~/Content/Images/key_logo.png"));
var pictureLogo = worksheet.Drawings.AddPicture("Logo Key Quimica", _keyLogo);
pictureLogo.SetPosition(0, 0, 0, 0);

в результате этого:

Screenshot of the Excel File

любая помощь был бы очень признателен.

здесь это файл excel в вопросе.

1 ответов


это сводится к EditAs настройка логотипа изображения. По умолчанию будет установлено значение OneCell но это TwoCell Я считаю, что решит вашу проблему. Документация на нем (глядя на EPP 4.0.1) довольно загадочна, но в основном говорит, что этот параметр сообщит чертежу, чтобы сохранить его исходную позицию строки/столбца и размер. Имена кажутся немного противоречивыми.

Я должен был угадать, как выглядит ваш код (дайте мне знать, если я ошибся), и я был в состоянии воспроизвести проблему и затем решить с помощью тега EditAs установка:

[TestMethod]
public void Image_Stretch_Test()
{
    //http://stackoverflow.com/questions/27873762/weird-behavior-when-setting-a-rows-height-on-epplus
    var existingFile = new FileInfo(@"c:\temp\temp.xlsx");
    if (existingFile.Exists)
        existingFile.Delete();

    using (var package = new ExcelPackage(existingFile))
    {
        var workbook = package.Workbook;
        var worksheet = workbook.Worksheets.Add("newsheet");

        var _keyLogo = Image.FromFile("C:/Users/Ernie/Desktop/key_logo.png");
        var pictureLogo = worksheet.Drawings.AddPicture("Logo Key Quimica", _keyLogo);
        pictureLogo.SetPosition(0, 0, 0, 0);
        pictureLogo.EditAs = eEditAs.TwoCell;  //REMOVE THIS TO SHOW THE STRETCH PROBLEM

        var cfPhoto = Image.FromFile("C:/Users/Ernie/Desktop/Main_Pic.png");
        var cfBm = new Bitmap(cfPhoto, new Size(215, 170));

        var pictureCf = worksheet.Drawings.AddPicture("Main_Pic", cfBm);
        pictureCf.SetPosition(10, 0, 0, 0);

        worksheet.Row(11).Height = 280;

        package.Save();
    }
}

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