首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DynamicJasper Excel和HyperLinks

DynamicJasper Excel和HyperLinks
EN

Stack Overflow用户
提问于 2012-02-06 23:28:19
回答 1查看 551关注 0票数 0

有没有人成功地用DynamicJasper添加了指向excel单元格的超链接?

在src中有一些测试展示了如何做到这一点……但我担心它们只用于html输出,而不是xls。

例如

代码语言:javascript
复制
DJHyperLink djlink = new DJHyperLink();
    djlink.setExpression(new StringExpression() {
        public Object evaluate(Map fields, Map variables, Map parameters) {             
            return "http://linkInImage.com?param=" + variables.get("REPORT_COUNT");
        }
    });
    djlink.setTooltip(new LiteralExpression("I'm a literal tootltip"));     

然后是AbstractColumn.setLink(djlink),这似乎不起作用,因为当我输出到excel时,从来不会调用evaluate()

我还尝试了设置文字=HYPERLINK("www.test.com").....再一次没有快乐。

现在有点卡住了。

EN

回答 1

Stack Overflow用户

发布于 2013-03-18 20:46:44

我相信你现在一定已经找到了解决这个问题的办法。然而,在这里回答,这样可以帮助其他人。我找不到在发布说明中提到的特定修复,但这似乎对DJ 4.0.3 release很有效。

我在AbstractLayoutManager看到了这一点

代码语言:javascript
复制
if (column.getLink() != null) {
    String name = getDesign().getName() + "_column_" + getReport().getColumns().indexOf(column);
    HyperLinkUtil.applyHyperLinkToElement((DynamicJasperDesign) getDesign(),column.getLink(),textField,name);
}

导航到ExpressionUtil::createCustomExpressionInvocationText2(),的最终调用的..with

代码语言:javascript
复制
public static String createCustomExpressionInvocationText2(String customExpName) {

    String fieldsMap = getTextForFieldsFromScriptlet();
    String parametersMap = getTextForParametersFromScriptlet();
    String variablesMap = getTextForVariablesFromScriptlet();

    String stringExpression = "(("+CustomExpression.class.getName()+")$P{REPORT_PARAMETERS_MAP}.get(\""+customExpName+"\"))."
        +CustomExpression.EVAL_METHOD_NAME+"( "+ fieldsMap +", " + variablesMap + ", " + parametersMap +" )";

    return stringExpression;
}

当我尝试使用您的代码时,它在HTML和Excel上都工作得很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9162477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档