1

Microsoft Excel 2007 を使用しています。最初の Excel シートに単純な図形があります。特定の行と列の別のシートを参照するこの単純な形状にハイパーリンクを追加したいと思います。これについて調査しましたが、特定のセルにハイパーリンクを追加する方法を示す例しか見つかりませんでした。Apache POI を使用して特定の単純な図形にハイパーリンクを追加するにはどうすればよいですか?

4

1 に答える 1

1

私の問題の解決策を見つけました。それが他の誰かに役立つことを願っています。

    // 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);
于 2013-06-05T13:36:35.900 に答える