我的任务是将 URL 中的图片放入 Excel 工作表中的特定单元格中。我使用带有 C# 的 NetOffice 来执行此操作。
但我的主要问题是我找不到将图片准确插入单元格的方法。当我使用 Sheet.Shapes.AddPicture() 时,我必须计算放置图片的坐标。当然,我对此没有问题(我创建了某种解决方法),但是,我想问一下我解决这个问题的方法是否正确,或者是否有其他方法可以将图像插入单元格。
这是我的解决方法:
var floatLeft = FloatLeftPixelsCalculation(rowNumber);
var floatTop = FloatTopPixelsCalculation(rowNumber);
Worksheet.Shapes.AddPicture(urlCellValue, MsoTriState.msoFalse, MsoTriState.msoTrue, floatLeft, floatTop, PictureWidth, PictureHeight);
public float FloatTopPixelsCalculation(int rowNumber)
{
float floatTop = 0;
for (var rNumber = 1; rNumber < rowNumber; rNumber++)
{
var cellHeight = Convert.ToSingle(Worksheet.Cells[rNumber, ColumnIndex].RowHeight);
floatTop = floatTop + cellHeight;
}
return floatTop;
}
public float FloatLeftPixelsCalculation(int rowNumber)
{
float floatLeft = 0;
for (var columnNumber = 1; columnNumber < ColumnIndex; columnNumber++)
{
var cellWidth = Convert.ToSingle(Worksheet.Cells[rowNumber, columnNumber].ColumnWidth);
floatLeft = floatLeft + cellWidth;
}
return floatLeft;
}
最佳答案
尽管 Doug Glancy 正确地指出 Excel 不会将图片视为单元格的“内部”,但图片可以关联 到特定的单元格,并且如果放置正确,图片将以直观的方式运行。
例如,假设您有一份房屋 list 。 A-Y 列有关于房子的各种信息,Z 列有房子的图片。如果图片与正确的单元格正确关联,那么当您排序、剪切、复制、粘贴范围时,图片会按照您预期的方式运行。
为了让 Excel 正确处理房屋,它们必须满足两个条件:
图片必须完全在单元格内。使用上面的代码,您将首先按原样放置图片,然后将单元格的行高和列宽调整为至少等于图片的高度和宽度。
shape.Placement 属性必须设置为 xlMove 或 xlMoveAndSize。在 MS 文档中,放置属性可以是以下之一:
xlFreeFloating (3) 对象自由 float 。 xlMove (2) 对象随单元移动。 xlMoveAndSize (1) 对象随单元移动并调整大小。
如果图片完全在单元格内并且 .Placement
设置为 xlMove
或 xlMoveAndSize
,那么每当容器单元格移动时,图片将随之移动。如果 .Placement
设置为 xlMoveandSize
,则当单元格宽度或高度发生变化时,图片将展开或收缩。这很有用,因为它可以确保图片位于单元格的边界内。如果您使用 xlMoveandSize
,您可能还需要考虑设置 ShapeRange.LockAspectRatio = msoTrue
以防止在调整列宽或行高时图片失真。
是的,Virginia,您可以在单元格中放置图片。请务必小心放置。
关于c# - 如何将图片插入到excel单元格中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11109759/