我正在尝试将图片放入 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
我的代码有什么错误?或者提出一个修复方案,通过它我可以获得我想要的输出。
此问题已解决。我在保存 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();
谢谢
问题是你使用了SetPosition方法,这个方法会调整图片大小,安装了这个,请使用
pic.From.Row = rowIndex - 1;
pic.From.Column = columnIndex - 1;
pic.To.Row = rowIndex;
pic.To.Column = columnIndex;
pic.SetSize(100, 100);