(c#)我可以通过编程将XLSX单元格设置为图片/图像吗?

本文关键字:图像 设置 单元格 可以通过 编程 XLSX | 更新日期: 2023-09-27 18:08:58

我希望制作包含一些图片(从文件嵌入图片)的电子表格,我开始看EPPlus(看起来像一个伟大的库)

然而,这些图像似乎并没有绑定到一个单元格,而是绑定到一个x,y坐标。

是否有一种方法与EPPlus或其他方式设置一个单元格的图片(然后操作单元格的大小?)

SetPosition

(c#)我可以通过编程将XLSX单元格设置为图片/图像吗?

我的误解…

这是我环顾四周时发现的一个注释:

没有任何版本的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);
    }
}

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

myColumn.ColumnWidth = myColumn.ColumnWidth / myColumn.Width * myPicture.Width

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

我不认为你可以在Excel中做到这一点;当你在Excel工作表中添加图片时,它是一个浮动对象,它不固定到特定的单元格。

EPPLUS文档中,应该可以将EditAs的值设置为TwoCell

picture.EditAs = eEditAs.TwoCell;

"指定当前绘图应移动和调整大小以保持其行和列锚定(即对象锚定到实际的from和to行和列)。"