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

时间:2011-09-19 18:47:23

标签: c# excel epplus

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

然而,似乎图像并未绑定到单元格 - 而是绑定到x,y,坐标。

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

SETPOSITION

4 个答案:

答案 0 :(得分:4)

我的误解......

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

  

没有版本的Excel允许您将图片插入单元格。图片将插入到工作表中并始终浮动。   图片的一个属性可以设置为“使用单元格移动和调整大小”,但只有在插入,删除或调整基础行和列时才会移动或拉伸图片。它不会将图片限制在单元格内。

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

如果我可以do this programmatically我将全力以赴

修改

以下代码几乎完全符合我的需要。

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

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);
    }
}

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

EPPLUS文档中找到,可以使用值EditAs上的TwoCell设置。

picture.EditAs = eEditAs.TwoCell;

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