加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 使用NPOI将图像插入Excel文件

发布时间:2020-12-15 22:04:39 所属栏目:百科 来源:网络整理
导读:我正在使用C#在Visual Studio 2010中编写程序,而我正在使用NPOI库. 我正在尝试将图像插入excel文件.我尝试了两种不同的方法,但它们都不起作用. //Method 1HSSFPatriarch patriarch = newSheet.CreateDrawingPatriarch() as HSSFPatriarch;HSSFClientAnchor a
我正在使用C#在Visual Studio 2010中编写程序,而我正在使用NPOI库.

我正在尝试将图像插入excel文件.我尝试了两种不同的方法,但它们都不起作用.

//Method 1

HSSFPatriarch patriarch = newSheet.CreateDrawingPatriarch() as HSSFPatriarch;
HSSFClientAnchor anchor;
var memoryStream = new MemoryStream();
System.Drawing.Image image = System.Drawing.Image.FromFile("image.jpeg");
image.Save(memoryStream,System.Drawing.Imaging.ImageFormat.Gif);
anchor = new HSSFClientAnchor(0,255,0);
anchor.AnchorType = 2; //types are 0,2,and 3. 0 resizes within the cell,2 doesn't
int index = newWorkbook.AddPicture(memoryStream.ToArray(),PictureType.JPEG);
HSSFPicture signaturePicture = patriarch.CreatePicture(anchor,index) as HSSFPicture; //ERROR

使用方法1,当我尝试编译时捕获异常.错误消息wasObject引用未设置为对象的实例,并且错误发生在代码的最后一行.

//Method 2

byte[] data = File.ReadAllBytes("image.jpeg");
int picInd = newWorkbook.AddPicture(data,XSSFWorkbook.PICTURE_TYPE_JPEG);
XSSFCreationHelper helper = newWorkbook.GetCreationHelper() as XSSFCreationHelper;
XSSFDrawing drawing = newSheet.CreateDrawingPatriarch() as XSSFDrawing;
XSSFClientAnchor anchor = helper.CreateClientAnchor() as XSSFClientAnchor;
anchor.Col1 = 0;
anchor.Row1 = 0;
XSSFPicture pict = drawing.CreatePicture(anchor,picInd) as XSSFPicture;

方法2编译并运行没有问题.但是当我尝试打开创建的excel文件时,我收到一条消息,说Excel在’output.xlsx’中找到了不可读的内容.你想恢复这个工作簿的内容吗?我恢复了工作簿,仍然没有显示图像.

插入图像后的下一步是在同一工作簿中克隆工作表.使用方法2,根本没有创建克隆表,我不确定一旦图像问题得到修复,这是否会得到修复.

有人可以帮我这个吗?我想知道如何使方法正常工作,或者是否有另一种方法将图像插入excel文件.

另外,作为一个注释,我正在使用XSSFWorkbook,XSSFSheet等(不是HSSF),我的输出文件是.xlsx

任何帮助/建议表示赞赏,谢谢!

解决方法

你的方法-2很好.但是你需要添加pict.Resize();在最后一行.

byte[] data = File.ReadAllBytes("image.jpeg");
int picInd = newWorkbook.AddPicture(data,picInd) as XSSFPicture;
pict.Resize();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读