pentaho在导出到excel时修改并打印参数
我使用pentaho报表设计器。我的prpt文件中有businessdate参数。它具有用于筛选sql查询的日期范围的值。我能够处理和修改它,而导出到html,但我有一个问题,在导出到excel 日期范围的格式如下:pentaho在导出到excel时修改并打印参数,excel,report,pentaho,designer,Excel,Report,Pentaho,Designer,我使用pentaho报表设计器。我的prpt文件中有businessdate参数。它具有用于筛选sql查询的日期范围的值。我能够处理和修改它,而导出到html,但我有一个问题,在导出到excel 日期范围的格式如下: - BETWEEN {d '2014-01-01'} AND {d '2014-01-31'} - IN ({d '2014-01-14'},{d '2014-01-15'}, {d '2014-01-19'} ,{d '2014-01-20'},{d '2014-01-21'
- BETWEEN {d '2014-01-01'} AND {d '2014-01-31'}
- IN ({d '2014-01-14'},{d '2014-01-15'}, {d '2014-01-19'} ,{d '2014-01-20'},{d '2014-01-21'})
我喜欢找出最大和最小日期并显示出来。但是,在本例中使用excel时,我很高兴使用逗号分隔显示它们,如下所示
- 2014-01-01, 2014-01-31
- 2014-01-14, 2014-01-15, 2014-01-19, 2014-01-20, 2014-01-21
如果我使用下面显示的基本公式,它在excel中工作,但当我将其应用于pentaho报表设计器中businessDate元素的excel-公式部分时,它不工作
=TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B4,"{d '",""), "BETWEEN", ""), "IN", ""),"'}",", "), " AND ", ""),")",""),"(",))
不一定要这样。在打印到excel之前,我很乐意使用任何建议的方法格式化此原始日期范围
提前谢谢。在浪费了很多时间之后,我找到了一种适用于所有导出类型的方法。正如我在问题中所说,我正在使用结构选项卡->选择主报告->属性选项卡->html->附加标题属性修改html打印的日期
<script type="text/javascript">
function init() {
var tableList = document.getElementsByTagName("table");
var businessDate = document.getElementById("businessDatePeriodSelected");
businessDate.innerHTML = businessDate.innerHTML+"testDateModified";
}
window.onload = init;
</script>
你最不需要做的事情就是把你的函数拖放到适合你的报告的地方。它将找到一个文本框,显示修改后的businessdate
如果您想在pentaho报告中打印参数,这将完成所有导出html、pdf和excel的工作。您也可以在打印前对其进行修改。这非常有用,因为语法在某些方面略有不同
祝你好运
/* businessdate is one of my parameters that I like to display on the report.
dataRow is automatically recognized by the interpreter which can be used for calling parameter values. It seems like came out of nowhere.*/
String value = dataRow.get("businessdate");
value= value.replaceAll("[^0-9\\-\\{\\}]", "");
value= value.replaceAll("[\\{]", ""); // replace all {
value= value.replaceAll("[\\}]", ","); // replace all }
value= value.substring(0, value.length()-1);
String[] dateArr = value.split(",");
return dateArr[0] +" - "+dateArr[dateArr.length-1];