当前位置: 首页 > 知识库问答 >
问题:

将超链接放入excel中的图像(Apache POI)

南门烈
2023-03-14

我可以在Apache POI中为单元格设置超链接,但我不知道如何将超链接放入图像中(我正在使用XSSF)

以下是放置单元格超链接的功能

/**
 * Helper function for putting hyperlink into specified cell
 * @param label
 * @param value
 * @param col
 * @param row
 * @param sheet
 */
private static void putImageHyperlink(Cell cell, CellStyle hyperlinkStyle, String value, Workbook wb) {
    try {
        CreationHelper createHelper = wb.getCreationHelper();
        Hyperlink link = createHelper.createHyperlink(Hyperlink.LINK_URL);
        link.setAddress(value);
        cell.setHyperlink(link);
        cell.setCellStyle(hyperlinkStyle);

        // Put hyperlink value
        cell.setCellValue(value);
    } catch (Exception e) {
        log.severe("Can't create hyperlink : " + Utils.exceptionToString(e));
    }
}

下面是将图像放入指定单元格的函数:

    /**
 * Put image into sheet at position [row,col]
 * @param sheet
 * @param col
 * @param row
 * @param imgData
 * @throws Exception
 */
private static void putImage(Workbook wb, Sheet sheet, int col, int row, byte[] imgData) throws Exception {
    try {
        Drawing drawing = sheet.createDrawingPatriarch();
        int pictureIdx = wb.addPicture(imgData, Workbook.PICTURE_TYPE_PICT);

        CreationHelper helper = wb.getCreationHelper();
        ClientAnchor anchor4 = helper.createClientAnchor();

        //set top-left corner of the picture,
        //subsequent call of Picture#resize() will operate relative to it
        anchor4.setCol1(col);
        anchor4.setRow1(row);
        anchor4.setCol2(col+1);
        anchor4.setRow2(row+1);

        drawing.createPicture(anchor4, pictureIdx);
    } catch (Exception ex) {
        log.severe("Exception : " + Utils.exceptionToString(ex));
    }
}

=

提前感谢!

共有1个答案

闾丘永春
2023-03-14

当查看Excel如何存储时,对于xl\drawings\u rels\drawing1中的图像,它的存储方式似乎有所不同。xml。rels和xl图纸1。xml是XLSX文件的一部分:

<代码>

<代码>

POI尚不支持通过其API添加此类超链接,但您可以使用底层低层API,如下所示,首先为超链接创建关系,然后将关系设置为图片对象中的超链接:

    PackageRelationship rel = ((XSSFDrawing)patriarch).getPackagePart().addRelationship(
            new URI("http://poi.apache.org"),
            TargetMode.EXTERNAL, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink");
    ((XSSFDrawing)patriarch).addRelation(rel.getId(),new POIXMLDocumentPart());

    CTPictureNonVisual nvPicPr = ((XSSFPicture)picture).getCTPicture().getNvPicPr();
    CTHyperlink hLinkClick = nvPicPr.getCNvPr().addNewHlinkClick();
    hLinkClick.setId(rel.getId());

 类似资料:
  • 问题内容: 这是我用于在Excel中将图像作为图标插入的方法: 这是我使用此方法创建图标的方法: 是否可以在此图标中放置一个超链接以转到同一电子表格中的另一个工作表或网站? 我读到的内容显然没有POI支持,但是可以使用底层的低级API来实现。但是我还不能真正成功地使用它。 有什么建议? 问题答案: 如果只支持可以,那么实际上可以使用底层的低级对象来完成。 如何开始?使用其中包含超链接的图片来创建工

  • 一些背景,我正在开发Java游戏,我正在使用Netbeans来构建它,我目前有2个java文件 App.java 董事会.java 现在我可以创建和显示一个简单的棋盘与所有的棋子在正确的位置我的问题是分配任何鼠标事件到这些棋子 目前,我使用textpad编写测试代码,并且没有图像的文件夹链接,并且已经能够让鼠标事件在那里工作,因此我知道事件的代码没有问题。 但是现在我正在Netbean中编写程序清

  • 问题内容: 我试图将图像放入带有Java的Excel单元格中,但没有成功,这是我正在使用的代码,但是我唯一要做的就是将图像放入excel工作表中,而不放在指定的单元格中 问题答案: 您已经在做的是将锚定图像定位到左上方的单元格()。然后,您已经将图像调整为原始大小。 如果图像适合该单元格,则必须使用左上单元格 和 右下单元格创建锚点。而且,请勿将图像调整为原始大小。 例: 如果从程序行中删除注释符

  • 问题内容: 我正在尝试做一些非常简单的事情。我想在表中特定行的列中放置一个图标。如果是文件夹,则显示文件夹图标。如果是文件,则显示文件图标。 有人知道如何在JavaFX 2中执行此操作吗? 我已经尝试了很多事情,这似乎应该很简单,或者至少是某个地方的例子。 问题答案: 好吧,我有一个巨大的假时刻。原来我的图片网址路径错误。 我确实找到了一个网站,该网站提供了为表添加元素的绝佳示例。这帮助我了解了一

  • 我创建了一个可以将图像导入标签的Swing应用程序,但我想做的是将导入的图像放入一个内部框架中,该框架将在图像删除后创建。 将图像放入Java应用程序 创建一个内部框架 使图像出现在内部框架中,而不是标签出现在JFrame中

  • 本文向大家介绍如何将图像用作HTML中的链接?,包括了如何将图像用作HTML中的链接?的使用技巧和注意事项,需要的朋友参考一下 要将图像用作HTML中的链接,请使用<img>标记以及带有href属性的<a>标记。<img>标记用于在网页中使用图像,<a>标记用于添加链接。在图片标签src属性下,添加图片的网址。这样,还可以添加高度和宽度。 示例 您可以尝试运行以下代码以将图像用作HTML中的链接