使用 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