如何插入图片到Excel单元格?

我的任务是把图片从URL到Excel工作表中的某个单元格。 我在C#中使用NetOffice来执行此操作。

我的主要问题是,我无法find一个方法来完全插入到单元格的图片。 当我使用Sheet.Shapes.AddPicture(),我必须计算坐标在哪里把我的照片。 当然,我没有问题(我创build了一种解决方法),但是,我想问我的方法来解决这个问题是正确的,或者如果有其他方法,我可以插入图像的单元格。

这是我的解决方法:

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不考虑图片在单元“内部”时是正确的,但是图片可以与特定的单元格相关联 ,并且如果放置正确,将直观地起作用。

例如,假设你有一个房屋清单。 AY有关于房子的各种信息,而Z栏有房子的照片。 如果图片与正确的单元格正确关联,则在对图片进行sorting,剪切,复制和粘贴范围时,图片的行为与您所期望的相同。

为了让Excel正确操作房屋,他们必须符合两个标准:

  1. 图片必须完全在单元格内。 使用上面的代码,您将首先放置图片,然后将单元格的行高和列宽调整为至less等于图片的高度和宽度。

  2. shape.Placement属性必须设置为xlMove或xlMoveAndSize。 从MS文档中,placement属性可以是下列之一: xlFreeFloating (3) Object is free floating. xlMove (2) Object is moved with the cells. xlMoveAndSize (1) Object is moved and sized with the cells. xlFreeFloating (3) Object is free floating. xlMove (2) Object is moved with the cells. xlMoveAndSize (1) Object is moved and sized with the cells.

如果图片完全位于单元格内部,并且.Placement设置为xlMovexlMoveAndSize ,则每当容器单元移动时,图片将随之移动。 如果.Placement设置为xlMoveandSize ,那么只要单元格宽度或高度发生更改,图片就会展开或收缩。 这可能是有用的,因为它确保图片保持在单元格的边界内。 如果使用xlMoveandSize ,则可能还需要考虑设置ShapeRange.LockAspectRatio = msoTrue以防止调整列宽或行高时图片变形。

所以是的,弗吉尼亚州,你可以在一个单元格中放置一张图片。 只要确保你仔细地放置它。