C# EPPlus 调整图片大小以适合单元格

问题描述 投票:0回答:2

我正在尝试将图片放入 B1 单元格中。图片正在插入,但高度比原始图像更大。 高度如何自动拉伸?

我正在使用 EPPlus 版本 4.0.6.0 和 .Net 版本 4.5.2使用 VS IDE 2013

这是输出屏幕截图。

所需的输出截图

这是我用来将图片放入B1单元格的代码示例。

imgCompanyLogo = Image.FromFile(@"C:\Users\tridip\Desktop\Test1\www_files\image002.png");
ws.Column(2).Width = Convert.ToDouble((45 + 0.11));
ws.Row(1).Height = Convert.ToDouble((46.5 + 0.11));
ExcelPicture pic = ws.Drawings.AddPicture("Logo", imgCompanyLogo);
pic.SetPosition(0, 0, 1, 0);
pic.SetSize(316, 60);

如果我评论或不评论这一行

pic.SetPosition(0, 0, 1, 0);
但总是得到相同的输出,其中图片被拉伸。

查看原始图像的外观。链接在这里https://ibb.co/PCxw3v0

我的代码有什么错误?或者提出一个修复方案,通过它我可以获得我想要的输出。

c# image epplus
2个回答
0
投票

此问题已解决。我在保存 Excel 文件之前将图像放在最后。 这是代码。

    if (imgCompanyLogo != null)
    {
        decimal mdw = ws.Workbook.MaxFontWidth;
        int pixelHeight = (int)(ws.Row(1).Height / 0.75);
        int pixelWidth = (int)decimal.Truncate(((256 * (decimal)ws.Column(2).Width + decimal.Truncate(128 / (decimal)mdw)) / 256) * mdw);
    
        var picture = ws.Drawings.AddPicture("Test", imgCompanyLogo);
        picture.SetSize(pixelWidth, pixelHeight);
        //picture.EditAs = OfficeOpenXml.Drawing.eEditAs.TwoCell;
        picture.SetPosition(0, 0, 1, 0);
    }
output.Save();

谢谢


0
投票

问题是你使用了SetPosition方法,这个方法会调整图片大小,安装了这个,请使用

                    pic.From.Row = rowIndex - 1;
                    pic.From.Column = columnIndex - 1;
                    pic.To.Row = rowIndex;
                    pic.To.Column = columnIndex;
                    pic.SetSize(100, 100);
© www.soinside.com 2019 - 2024. All rights reserved.