pentaho在导出到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'

我使用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'})
我喜欢找出最大和最小日期并显示出来。但是,在本例中使用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];