如何在不提示替换(空)目标单元格(EPPlus)的内容的情况下将图像添加到工作表中?

时间:2016-10-26 18:43:47

标签: c# excel epplus epplus-4

当我打开使用EPPlus(C#)生成的Excel文件时,我得到" 您想要替换[... .xlsx]数据透视表中目标单元格的内容吗?"

正如您在下面的屏幕截图中看到的那样,单元格中没有任何内容可以显示图像。即使我将图像推到数据透视表的外边缘之外,我也收到了这条消息(我一直放在C / 3列下面)。当我在上面引用的对话框中选择“是”时,图像最终被放置在工作表上(如果我选择"没有"它没有被添加),并且工作表看起来像这样:

enter image description here

这是我用来添加图片的代码:

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;

......也行不通 - 我还是得到了。

显然问题出在其他地方,但我不知道在哪里。

更新2

数据透视表下面隐藏数据的情况;一旦我摆脱了这个问题,问题就消失了。 IOW,问题在于我的代码,而不是EPPlus。

1 个答案:

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