(C#)我可以以编程方式将XLSX单元格设置为图片/图像吗?

Tim*_*Tim 5 c# excel epplus

我希望制作包含一些图片的电子表格(嵌入文件中的图片),我开始看EPPlus(看起来像一个很棒的图书馆)

然而,似乎图像并不依赖于细胞 - 而是与x,y,坐标相关联.

有没有办法用EPPlus或其他方式将单元格设置为图片(然后操纵单元格的大小?)

SETPOSITION

Tim*_*Tim 5

我的误会...

这是我在环顾四周时发现的评论:

没有任何版本的 Excel 允许您将图片插入单元格。图片被插入到工作表中并且将始终浮动。图片的属性之一可以设置为“随单元格移动和调整大小”,但仅当插入、删除底层行和列或调整大小时才会移动或拉伸图片。它不会将图片限制在单元格中。

所以也许我只需要适当地设置属性即可。

如果我能以编程方式完成此操作,我就一切就绪

编辑

下面的代码几乎满足了我想要/需要的要求。

请注意,在插入图片之前,我将要覆盖的单元格的宽度和高度设置为适当的尺寸。

private static void AddImage(ExcelWorksheet ws, int rowIndex, String imageFile)
{
    ExcelPicture picture = null;
    Bitmap image = new Bitmap(imageFile);

    if (image != null)
    {
        picture = ws.Drawings.AddPicture("pic" + rowIndex.ToString(), image);                
        picture.From.Column = 0;
        picture.From.Row = rowIndex-1;
        picture.SetSize(320, 240);
    }
}
Run Code Online (Sandbox Code Playgroud)


Jon*_*ier 3

您可以插入图片,然后调整其.Top.Left使其与相应单元格的.Top和对齐。.Left您可以.RowHeight使用与图片相同的单位设置单元格行的单位.height(尽管有最大高度)。该.ColumnWidth列的宽度以文本字符为单位,所以我所做的类似于:

myColumn.ColumnWidth = myColumn.ColumnWidth / myColumn.Width * myPicture.Width
Run Code Online (Sandbox Code Playgroud)

我运行它两次,因为有时第一次设置时.ColumnWidth,它的设置不精确。