【问题标题】:DynamicJasper Excel and HyperLinksDynamicJasper Excel 和超链接
【发布时间】:2012-02-06 15:28:18
【问题描述】:

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

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

EG

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")..... 再次没有乐趣。

现在有点卡住了。

【问题讨论】:

  • 只是一个快速更新:我想我已经或多或少地尝试了所有我能做的 DJ,我给他们的支持发送了电子邮件,看看我是否可以支付一些建议......等待回复。与此同时,我发现了 docx4j,在第一次检查时,它似乎完成了我需要做的所有事情,而且非常容易,我唯一遇到的问题是在 openoffice 中打开 Excel xlsx 文件。除此之外,我设法在 45 分钟内启动并运行它。很酷。
  • 没有收到 Dynamic Jasper 人员的回复。所以我花了 24 小时学习 SpreadsheetML 和 Docx4j 的乐趣,超级灵活,超级快......我喜欢它!除了ooxml的初始复杂性!

标签: excel hyperlink jasper-reports dynamic-jasper


【解决方案1】:

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

我在 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。

【讨论】:

    猜你喜欢
    • 2018-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 2016-10-16
    • 1970-01-01
    相关资源
    最近更新 更多