今天写一个小程序用到了操作Excel图片的功能,我用的是Epplus,首先查了一下插入图片的接口,还是非常简单的

var picture = sheet.Drawings.AddPicture("test"new FileInfo(@"r:\01.png"));
picture.SetPosition(100, 200);

然后尝试替换图片的功能,方案是在原图片的位置放置新图片,再删除原图片,本以为非常简单,结果却发现Epplus有个坑,Position属性直接返回了个null。

用Epplus实现简单的Excel中的图像操作_插入图片

再网上查了一下,Epplus的Image的位置保存在From属性中,复制其From属性即可实现在同样的位置存放。

用Epplus实现简单的Excel中的图像操作_JAVA_02

newPic.From.Column    = oldPic.From.Column;
newPic.From.Row       = oldPic.From.Row;
newPic.From.ColumnOff = oldPic.From.ColumnOff;
newPic.From.RowOff    = oldPic.From.RowOff;

另外,如果同时要复制其大小的话,要复制其Size参数。原始的单位并不是像素。

newPic.Size.Width  = oldPic.Size.Width;
newPic.Size.Height = oldPic.Size.Height;