C# 如何将图片插入excel单元格?

C# 如何将图片插入excel单元格?,c#,.net,excel,cell,image,C#,.net,Excel,Cell,Image,我的任务是将URL中的图片放入excel工作表的特定单元格中。我正在使用NetOffice和C#来实现这一点 但我的主要问题是,我找不到一种方法将图片准确地插入到单元格中。当我使用Sheet.Shapes.AddPicture()时,我必须计算图片放置位置的坐标。当然,我对此没有问题(我创建了一些变通方法),但是,我想问一下我解决这个问题的方法是否正确,或者是否有其他方法可以将图像插入单元格 以下是我的解决方法: var floatLeft = FloatLeftPixelsCalculatio

我的任务是将URL中的图片放入excel工作表的特定单元格中。我正在使用NetOffice和C#来实现这一点

但我的主要问题是,我找不到一种方法将图片准确地插入到单元格中。当我使用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;
        }
var floatLeft=FloatLeftPixelsCalculation(行数);
var floatTop=FloatTopPixelsCalculation(行数);
工作表.Shapes.AddPicture(urlCellValue、MsoTriState.msoFalse、MsoTriState.msoTrue、floatLeft、floatTop、PictureWidth、picturehight);
公共浮点FloatTopPixelsCalculation(整数行数)
{
float-floatTop=0;
对于(变量rNumber=1;rNumber虽然Doug Glancy是正确的,说明Excel不认为图片是一个单元格的“内部”,但是图片可以与一个特定的单元格相关联,如果正确放置,它将直观地显示。p>
例如,假设您有一个房屋列表。A-Y列有关于房子的各种信息,Z列有房子的图片。如果图片与适当的单元格正确关联,则当您对范围进行排序、剪切、复制和粘贴时,图片的行为将与您预期的方式一致

为了让Excel能够正确地操作这些房屋,它们必须满足两个标准:

  • 图片必须完全位于单元格内部。使用上面的代码,首先将图片按原样放置,然后将单元格的行高和列宽调整为至少等于图片的高度和宽度

  • shape.Placement属性必须设置为xlMove或xlMoveAndSize。根据MS文档,placement属性可以是以下属性之一:
    
    xlFreeFloating(3)对象是自由浮动的。
    xlMove(2)对象随单元格一起移动。
    xlMoveAndSize(1)对象随单元格一起移动和调整大小。

  • 如果图片完全位于单元格内部,并且
    .Placement
    设置为
    xlMove
    xlMoveAndSize
    ,则每当容器单元格移动时,图片都会随之移动。如果将
    .Placement
    设置为
    xlMoveandSize
    ,则每当单元格宽度或高度发生变化时,图片将展开或收缩。这会很有帮助,因为它可以确保图片保持在单元格的边界内。如果使用<代码> XLMOVE和Stase,还可能考虑设置<代码> Spuleangang.LoopasPrTraseOx= MSOSUT/Obj>以防止在调整列宽或行高时图像失真。


    是的,维吉尼亚,你可以把一张照片放在牢房里。请务必小心放置。

    据我所知,图像不会直接进入工作表的单元格内部。这可以通过将图像插入电子表格来证明——请注意,单元格顶部有点“浮动”——与剪贴画、形状等相同。您不能将图片插入单元格。通过使用“上”和“左”属性等将它们与单元格对齐的方法是正确的。