我希望制作包含一些图片的电子表格(从文件中嵌入图片),我开始查看EPPlus(看起来像一个很棒的库)
然而,图像似乎没有与单元格相关联 - 而是与 x,y 坐标相关联。
有没有办法使用 EPPlus 或其他方式将单元格设置为图片(然后操纵单元格的大小?)
设置位置
我的误会...
这是我环顾四周时发现的评论:
没有任何版本的 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
.RowHeight
.height
.ColumnWidth
myColumn.ColumnWidth = myColumn.ColumnWidth / myColumn.Width * myPicture.Width
我运行它两次,因为有时你第一次设置.ColumnWidth
时,它没有精确设置。
我认为您不能在 Excel 本身中做到这一点。当您将图片添加到 Excel 工作表时,它是一个浮动对象,它不固定在特定的单元格中。
在EPPLUS
文档中找到它应该可以使用EditAs
value 的设置TwoCell
。
picture.EditAs = eEditAs.TwoCell;
“指定当前图形应移动并调整大小以保持其行和列锚点(即对象锚定到实际的从行和列到行和列)。”