使用EPPlus将图像添加到Excel中
我试图用EPPlus多次将相同的图像添加到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.SetPosition(a*5, 0, 2, 0);
}
一切正常,所有图像都可以正确添加,但它们会向下延伸。 以下是其中一张图片的样子:
但是它在excel中看起来像这样:
我不得不调整每张图片开头的每一行,但我不认为这会影响它。 会有一种方法来添加图片/做我正在尝试做什么,或者我将不得不手动复制粘贴图像? (我以图片为例)
谢谢。
我不确定这是否是最佳解决方案,但是确定了解决问题的方法。
以下是我所做的:
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);
}
链接地址: http://www.djcxy.com/p/72019.html