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

如何使用apache POI向Excel简单形状添加超链接?

殳越
2023-03-14

我使用Microsoft Excel2007。我在第一个excel表上有一个简单的形状。我想在这个简单的形状上添加一个超链接,它引用了特定行和列上的另一个工作表。我对此进行了研究,但我只找到了演示如何向给定单元格添加超链接的示例。如何在Apache POI的帮助下向给定的简单形状添加超链接?

共有1个答案

云宜人
2023-03-14

我找到了解决问题的办法。我希望它能对其他人有所帮助。

    // Example for hyperlink address
    // String hyperlinkAddress = sheet.getPackagePart().getPartName() + "/#'Sheet name'!Cell Address"

    // My hyperlink address
    String hyperlinkAddress = sheet.getPackagePart().getPartName()
                + "/#'List_of_Items'!A12";

    // Create URI object which will containing our hyperlink address.
    URI uri = new URI(null, null, hyperlinkAddress, null, null);

    // Add relationship to XSSFDrawing object. 
    aPatriarch.getPackagePart().addRelationship(uri, TargetMode.INTERNAL,
                    XSSFRelation.SHEET_HYPERLINKS.getRelation());

    // We need to extract the ID of the Relationship.
    // We'll set the ID of the hyperlink to be the same as ID of the Relationship.
    // To find appropriate Relationship we will traverse through all Relationships in the 'aPatriarch' object. 
    String relationshipId = null;
    PackageRelationshipCollection prc = aPatriarch.getPackagePart().getRelationships();
    for (PackageRelationship pr : prc) {
        URI targetURI = pr.getTargetURI();
        String target = targetURI.getPath();
        if (target.equals(hyperlinkAddress)) {
           relationshipId = pr.getId();
           break;
        }
    }

    // Create the hyperlink object
    CTHyperlink hyperlink = CTHyperlink.Factory.newInstance();
    // Set ID of hyperlink to be the same as Relationship ID
    hyperlink.setId(relationshipId);

    // Add hyperlink to the given shape
    shape.getCTShape().getNvSpPr().getCNvPr().setHlinkClick(hyperlink);
 类似资料:
  • 有什么想法如何添加一个超链接在一个网页上使用这个库? 我发现了这个问题:如何使用pdfbox在内容中设置超链接,但这不起作用。 我只想在pdf文件的第一页添加一个超链接。 我更喜欢在页面底部添加以URL为中心的超链接。但目前任何建议都有帮助

  • 我正在用apache poi xslf库创建一个Powerpoint演示文稿。我需要创建一个自动形状,当单击自动形状时,它应该转到特定的幻灯片。 我可以通过向自动形状添加文本并创建如下所示的超链接来做到这一点。 但问题是,当我创建这样一个自动形状时,它实际上链接文本而不是形状。此外,当我从Powerpoint打开它时,它会以蓝色下划线的文本显示超链接,我不想这样做。 在Powerpoint中,您可

  • 问题内容: 我想在使用创建的PDF中添加超链接,这样我单击一些文本示例,“单击此处”将重定向到URL。我尝试使用和,但是如何添加呢? 问题答案: 要添加使用以下代码

  • 我有一个要求,需要将数据验证添加到整个列中,而不是特定的单元格中。我查阅了ApachePOI的文档,发现了下面的示例 但是上面的例子为特定的单元格创建了一个下拉数据验证。在这种情况下,行0,列0。列中的其余单元格没有验证。但是在实际的excel文件中,我们可以这样做,所以这应该是可能的。我尝试并搜索了很多,但无法找到解决方案。请帮助...

  • 本文向大家介绍iOS 如何使用UIBezierPath创建简单的形状,包括了iOS 如何使用UIBezierPath创建简单的形状的使用技巧和注意事项,需要的朋友参考一下 示例 对于一个简单的圈子: 迅速: 对于一个简单的矩形: 迅速: 对于简单的一行: 迅速: 半圈: 迅速: 对于一个简单的三角形: 迅速:            

  • 我使用React-Leaflet显示Leaflet.js地图。我使用React-Leaflet GeoJSON(这里的来源)在地图上显示一个多边形层。 虽然我可以改变多边形填充()的不透明度,但我找不到用图案(如方格、条纹等)填充多边形的选项 我发现了一个项目(Leaflet.pattern),它支持将填充模式添加到形状,但是它还没有被修改为与一起使用。 所以我的问题是:我如何向形状中添加模式,或