如何使用apache poi将超链接添加到Excel简单形状? [英] How to add hyperlink to Excel simple shape using apache poi?

查看:42
本文介绍了如何使用apache poi将超链接添加到Excel简单形状?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I use Microsoft Excel 2007. I have a simple shape on the first excel sheet. I would like to add a hyperlink on this simple shape which refer to another sheet on the specific row and column. I make a research about this but I only found examples which demonstrate how to add a hyperlink to a given cell. How can I add a hyperlink to a given simple shape with the help of Apache POI?

推荐答案

我找到了问题的解决方案.我希望它会对其他人有所帮助.

I found solution of my issue. I hope it will help to someone else.

    // 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);

这篇关于如何使用apache poi将超链接添加到Excel简单形状?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆