微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我正在使用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();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐