java - Apache POI 插入图像

标签 java android image excel apache-poi

我在制作 Excel 表格时遇到问题。 关于这个主题有很多问题,但我根本无法弄清楚我做错了什么。 我的代码运行,没有显示任何错误,但我没有看到插入的图像 :(

代码如下:

    InputStream is = new FileInputStream("nasuto_tlo.png");
    byte [] bytes = IOUtils.toByteArray(is); 
    int pictureIndex = wb.addPicture(bytes, Workbook.PICTURE_TYPE_PNG);
    is.close();

    CreationHelper helper = wb.getCreationHelper();
    Drawing drawingPatriarch = sheet.createDrawingPatriarch();
    ClientAnchor anchor = helper.createClientAnchor();

    anchor.setCol1(2);
    anchor.setRow1(3);
    Picture pict = drawingPatriarch.createPicture(anchor, pictureIndex);
    pict.resize();

    try {
        FileOutputStream out = new FileOutputStream(root+"/Busotina/Busotina1.xls");
        wb.write(out);
        out.close();
    } catch (Exception e) {
        e.printStackTrace();
    }

最佳答案

问题是你的 anchor 不正确。 您需要设置所有 4 个值,因为默认值为 0 - 但您的第一列不能比第二列更正确;)您将得到负范围。 当您打开 excel 文件时,您应该会收到一条警告,指出它已损坏。

那么试试

anchor.setCol1(2);
anchor.setCol2(3);
anchor.setRow1(3);
anchor.setRow2(4);

来 self 编写的一些代码的工作示例:

// read the image to the stream
final FileInputStream stream =
        new FileInputStream( imagePath );
final CreationHelper helper = workbook.getCreationHelper();
final Drawing drawing = sheet.createDrawingPatriarch();

final ClientAnchor anchor = helper.createClientAnchor();
anchor.setAnchorType( ClientAnchor.MOVE_AND_RESIZE );


final int pictureIndex =
        workbook.addPicture(IOUtils.toByteArray(stream), Workbook.PICTURE_TYPE_PNG);


anchor.setCol1( 0 );
anchor.setRow1( LOGO_ROW ); // same row is okay
anchor.setRow2( LOGO_ROW );
anchor.setCol2( 1 );
final Picture pict = drawing.createPicture( anchor, pictureIndex );
pict.resize();

关于java - Apache POI 插入图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21991473/

相关文章:

java - SWT:MenuItem 无法在 Linux 中设置图像

java - 如果参数包含空格连接,但不使用 setString,则获得 resultSet

java - 我可以使用 hibernate native SQL 查询删除表吗

android - 即使 AndroidManifest 更改,Phonegap 应用程序在切换方向时也会崩溃

jquery - 悬停时图像放大,div 框中的内容附加到图像

php - SQL 将所有 .JPG 设置为 .PNG

java - 在 Java 中如何将二进制数转换为 BigInteger?

android - java.util.HashMap 无法转换为 com.google.android.gms.maps.model.LatLng

android - 一个 ExpandableListView 的多种布局

java - 双线性插值