1

当我打开使用 EPPlus (C#) 生成的 Excel 文件时,我得到“你想替换 [... .xlsx]PivotTable 中目标单元格的内容吗?

正如您在下面的屏幕截图中所见,我希望显示图像的单元格中没有任何内容。即使我将图像推到数据透视表的外边缘之外,我也会收到此消息(我一直放在 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;
}

我怎样才能让消息不显示(以编程方式,这不可能是用户需要做的事情)和“只是做它”或让它知道那个位置没有任何东西,无论如何?

更新

这显然不是问题;我试图删除这篇文章,但不能,因为它有答案。即使我评论了图像的写作,我也明白了。并试图阻止这样的消息:

_xlApp.DisplayAlerts = false;

...也不起作用-我仍然明白。

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

更新 2

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

4

1 回答 1

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);
}
于 2016-10-26T19:48:33.660 回答