C# 使用ePlus将图像添加到Excel中
我正在尝试使用EPPlus将同一图像多次添加到excel文件中。我正在使用以下代码执行此操作:C# 使用ePlus将图像添加到Excel中,c#,epplus,C#,Epplus,我正在尝试使用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;
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);
}
Image logo=Image.FromFile(路径);
ExcelPackage=新的ExcelPackage(信息);
var ws=package.Workbook.Worksheets.Add(“测试页”);
对于(int a=0;a<5;a++)
{
西行(a*5)。高度=39.00D;
var picture=ws.Drawings.AddPicture(a.ToString(),logo);
图片。设置位置(a*5,0,2,0);
}
一切都很完美,所有图像都正确添加,但它们向下拉伸。以下是其中一张图片的外观:
但在excel中看起来是这样的:
我必须调整每张图片开头的每一行的大小,但我不认为这会影响它。是否有办法添加图片/执行我正在尝试的操作,或者我必须手动复制粘贴图片?(我以图片为例)
谢谢。当您将示例39作为像素传递时,它会在内部将其作为点而不是像素,因此您认为您要将行的高度设置为39像素,但实际上它将行的高度设置为39点。因此,根据下面的公式,您的行高度将变为52像素 如果您想将行的高度设置为39px,意味着您必须通过29.25点(根据公式)而不是39点
points = pixels * 72 / 96
试试这个。试试这个
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(路径);
ExcelPackage=新的ExcelPackage(信息);
var ws=package.Workbook.Worksheets.Add(“测试页”);
对于(int a=0;a<5;a++)
{
西行(a*5)。高度=39.00D;
var picture=ws.Drawings.AddPicture(a.ToString(),logo);
//xlMove禁用自动调整大小
picture.Placement=xlMove;//XLPlacement:xlMoveAndSize,xlMove,xlFreeFloating
图片。设置位置(a*5,0,2,0);
}
或
Image logo=Image.FromFile(路径);
ExcelPackage=新的ExcelPackage(信息);
var ws=package.Workbook.Worksheets.Add(“测试页”);
对于(int a=0;a<5;a++)
{
西行(a*5)。高度=39.00D;
var picture=ws.Drawings.AddPicture(a.ToString(),logo);
picture.From.Column=0;
picture.From.Row=a;
图片。设置大小(120150);
}
我不确定这是否是最好的解决方案,但肯定是解决您问题的方法
以下是我所做的:
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);
}
ExcelPackage=新的ExcelPackage();
var ws=package.Workbook.Worksheets.Add(“测试页”);
对于(int a=0;a<5;a++)
{
西行(a*5)。高度=39.00D;
}
对于(int a=0;a<5;a++)
{
var picture=ws.Drawings.AddPicture(a.ToString(),logo);
图片。设置位置(a*5,0,2,0);
}
这是它的样子
由于某些原因,当我们设置行高时,它会干扰图片高度。在保存文档之前添加以下内容:
foreach (ExcelPicture drawing in ws.Drawings)
drawing.SetSize(100);
使用以下代码调整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.From.Column = 0;
picture.From.Row = a;
picture.To.Column=0;//end cell value
picture.To.Row=a;//end cell value
picture.SetSize(120, 150);
}
Image logo=Image.FromFile(路径);
ExcelPackage=新的ExcelPackage(信息);
var ws=package.Workbook.Worksheets.Add(“测试页”);
对于(int a=0;a<5;a++)
{
西行(a*5)。高度=39.00D;
var picture=ws.Drawings.AddPicture(a.ToString(),logo);
picture.From.Column=0;
picture.From.Row=a;
picture.To.Column=0;//结束单元格值
picture.To.Row=a;//结束单元格值
图片。设置大小(120150);
}
这是一个可以在C#中应用的解决方案
你在哪个单位证明宽度?@Tusharchabhaiya你说的宽度是什么意思?你是说我改变的每一排的高度吗?是的,你改变的是哪一排的高度?意思是px,cm,point我不确定它是哪一个,但是如果你进入excel并重新调整一行的大小,它会显示:
Height:####(#像素)
。我正在更改第一个测量值:高度:39.00
。我希望这是有意义的。如何使用格式Image Base64在Excel中插入图片?(EPPlus)我正在重新创建excel模板,该行的高度为39点。我必须尽可能近距离地重新创建它,我的问题是图像向下延伸。请尝试将行的高度设置为29.25并进行检查。对于第一个图片,位置不存在。第二种方法以不同的方式拉伸图像;我试过:picture.SetSize(logo.Width,logo.Height)
但图片仍然向下延伸。@MatthewRz代替logo.Width和logo.Height使用Width=logo.Width*72/96和Height=logo.Height*72/96。@Tusharchabhaiya图片仍然向下延伸。哦,我看错了你的帖子。让我看看是否可以将图像放入行中。是否需要将图像放入行中?我需要更改行高的唯一原因是,在实际的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.From.Column = 0;
picture.From.Row = a;
picture.To.Column=0;//end cell value
picture.To.Row=a;//end cell value
picture.SetSize(120, 150);
}
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;
}