0

有没有人设法使用 DynamicJasper 将超链接添加到 Excel 单元格?

src 中有测试显示如何做到这一点....但我担心它们仅用于 html 输出而不是 xls。

例如

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),这似乎不起作用,因为evaluate()当我输出到 excel 时从未调用过。

我也尝试过设置文字=HYPERLINK("www.test.com").....再次没有乐趣。

现在有点卡住了。

4

1 回答 1

0

我相信您现在一定已经找到了解决方案。但是在这里回答,以便它可以帮助其他人。我找不到作为发行说明的一部分提到的特定修复,但这似乎适用于DJ 4.0.3 版本

我在 AbstractLayoutManager 中看到了这个,

if (column.getLink() != null) {
    String name = getDesign().getName() + "_column_" + getReport().getColumns().indexOf(column);
    HyperLinkUtil.applyHyperLinkToElement((DynamicJasperDesign) getDesign(),column.getLink(),textField,name);
}

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

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。

于 2013-03-18T12:46:44.007 回答