有没有人设法使用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")
.....再没有快乐。
答案 0 :(得分:0)
我相信你现在必须找到解决方案。但是在这里回答它可以帮助别人。我找不到作为发行说明的一部分提到的具体修复,但这似乎适用于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。