我正在使用C#编写Visual Studio 2010程序,并使用NPOI库。我试图向Excel文件中插入图片。我尝试了两种不同的方法,但都没有成功。
方法2编译和运行没有问题。但是当我尝试打开创建的Excel文件时,收到一条消息:“
插入图像后的下一步是在同一工作簿中
请问有人可以帮我解决这个问题吗?我想知道如何使其中任何一种方法正常工作,或者是否有其他方法可以将图像插入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, 0, 255, 255, 0, 0, 0, 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编译时,捕获了一个异常。错误信息是对象引用未设置为对象的实例
,并且该错误发生在代码的最后一行。
//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
。感谢任何帮助/建议!
patriarch
、anchor
或index
是空的。 - Liam McInroyas HSSFPatriach
吗?该方法已经返回了该类型。 - Liam McInroy