当我打开使用EPPlus(C#)生成的Excel文件时,我得到" 您想要替换[... .xlsx]数据透视表中目标单元格的内容吗?"
正如您在下面的屏幕截图中看到的那样,单元格中没有任何内容可以显示图像。即使我将图像推到数据透视表的外边缘之外,我也收到了这条消息(我一直放在C / 3列下面)。当我在上面引用的对话框中选择“是”时,图像最终被放置在工作表上(如果我选择"没有"它没有被添加),并且工作表看起来像这样:
这是我用来添加图片的代码:
int imageCol = _grandTotalsColumnPivotTable + 1; // -1; <= I really want it to be this
AddImage(pivotTableWorksheet, 1, imageCol);
. . .
private void AddImage(ExcelWorksheet oSheet, int rowIndex, int colIndex)
{
var excelImage = oSheet.Drawings.AddPicture("PRO*ACT Logo", _logo);
excelImage.From.Column = colIndex - 1;
excelImage.From.Row = rowIndex - 1;
excelImage.SetSize(130, 100);
excelImage.From.ColumnOff = Pixel2MTU(2);
excelImage.From.RowOff = Pixel2MTU(2);
}
public int Pixel2MTU(int pixels)
{
int mtus = pixels * 9525;
return mtus;
}
如何让消息不显示(以编程方式,这可能不是用户需要做的事情)和&#34;只是这样做&#34;还是让它知道那个地方什么都没有?
这显然不是问题;我试图删除这篇文章,但不能,因为它有答案。即使我评论出图像的写作,我也明白了。并试图阻止这样的消息:
_xlApp.DisplayAlerts = false;
......也行不通 - 我还是得到了。
显然问题出在其他地方,但我不知道在哪里。
数据透视表下面隐藏数据的情况;一旦我摆脱了这个问题,问题就消失了。 IOW,问题在于我的代码,而不是EPPlus。
答案 0 :(得分:0)
我使用此代码将图像添加到Excel。它没有要求我替换内容。但我不使用数据透视表。也许这会产生影响。
using (System.Drawing.Image image = System.Drawing.Image.FromFile(HttpContext.Current.Server.MapPath("test.png")))
{
var excelImage = ws.Drawings.AddPicture("My Logo", image);
excelImage.SetPosition(1, 0, 5, 0);
}