有没有人成功地用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),这似乎不起作用,因为当我输出到excel时,从来不会调用evaluate()。
我还尝试了设置文字=HYPERLINK("www.test.com").....再一次没有快乐。
现在有点卡住了。
发布于 2013-03-18 20:46:44
我相信你现在一定已经找到了解决这个问题的办法。然而,在这里回答,这样可以帮助其他人。我找不到在发布说明中提到的特定修复,但这似乎对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(),的最终调用的..with
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上都工作得很好。
https://stackoverflow.com/questions/9162477
复制相似问题