使用 jxl 库在 excel 文件中添加了不正确的图像
Incorrect image added on excel file with jxl library
我会将图像添加到使用库 jxl:
创建的 excel 文件中
http://jexcelapi.sourceforge.net/
我尝试使用以下代码添加 2 张图片:
InputStream stream = ClassLoader.getSystemResourceAsStream("images/logo1.png");
byte abyte0[] = new byte[stream.available()];
stream.read(abyte0);
wsheet.addImage(new WritableImage(1, 1, 8, 6, abyte0));
InputStream stream2 = ClassLoader.getSystemResourceAsStream("images/logo2.png");
byte abyte2[] = new byte[stream2.available()];
stream2.read(abyte2);
wsheet.addImage(new WritableImage(1, 11, 5, 34, abyte2));
但是结果不正确。第一张图片已正确添加,但第二张图片没有。
这是截图:
打印出来的图片全黑!
我怎样才能解决这个问题?
谢谢。
你其实有2个问题。
首先,InputStream.available() 给出了调用 read() 时可以读取的字节数的估计值,而不是流的完整大小。
其次,read(byte[]) 不能保证读取 available() 返回的字节数。相反,它 returns 读取的字节数,或者在到达流末尾时为 -1。
有关执行此操作的正确方法,请参阅 Convert InputStream to byte array in Java
我会将图像添加到使用库 jxl:
创建的 excel 文件中http://jexcelapi.sourceforge.net/
我尝试使用以下代码添加 2 张图片:
InputStream stream = ClassLoader.getSystemResourceAsStream("images/logo1.png");
byte abyte0[] = new byte[stream.available()];
stream.read(abyte0);
wsheet.addImage(new WritableImage(1, 1, 8, 6, abyte0));
InputStream stream2 = ClassLoader.getSystemResourceAsStream("images/logo2.png");
byte abyte2[] = new byte[stream2.available()];
stream2.read(abyte2);
wsheet.addImage(new WritableImage(1, 11, 5, 34, abyte2));
但是结果不正确。第一张图片已正确添加,但第二张图片没有。
这是截图:
打印出来的图片全黑! 我怎样才能解决这个问题?
谢谢。
你其实有2个问题。
首先,InputStream.available() 给出了调用 read() 时可以读取的字节数的估计值,而不是流的完整大小。
其次,read(byte[]) 不能保证读取 available() 返回的字节数。相反,它 returns 读取的字节数,或者在到达流末尾时为 -1。
有关执行此操作的正确方法,请参阅 Convert InputStream to byte array in Java