2012-01-04 82 views
1

我想在我的贾斯珀报告中创建一个表。 这可以在iReport中完成(这是完成的:-)),但表的内容(例如列的名称)正在改变,所以我想创建仅从JAVA代码(通过不使用jrxml文件)。贾斯珀报告表创建

这怎么可能?

到目前为止,这是我做了什么(主要仅限零件):

//table component 
final StandardTable table = new StandardTable(); 
final StandardColumn col1 = new StandardColumn();  
final DesignCell col1Header = new DesignCell(); 
final JRDesignStaticText textElement = new JRDesignStaticText(); 

col1Header.addElement(textElement); 
col1.setDetailCell(col1Header); 
table.addColumn(col1); 

/datasource 
final JRDesignDatasetParameter param = new JRDesignDatasetParameter(); 
param.setName("REPORT_DATA_SOURCE"); 
final JRDesignExpression exp = new JRDesignExpression("$P{REPORT_DATA_SOURCE}"); 
param.setExpression(exp); 

//datasetrun 
final JRDesignDatasetRun drs = new JRDesignDatasetRun(); 
table.setDatasetRun(drs); 
drs.addParameter(param); 

如何继续?

谢谢 krisy

回答

2

万一有人绊倒在同样的问题(并为未来的自己:-))这里是如何继续上面的代码,为表元素添加到报告摘要:

//create reportElement (inside componentelement) 
JRDesignComponentElement reportElem = new JRDesignComponentElement(); 
//reportElem.setKey("table"); 
reportElem.setComponentKey(new ComponentKey("http://jasperreports.sourceforge.net/jasperreports/components", "jr", "table")); 
reportElem.setComponent(table); 
reportElem.setHeight(100); 
reportElem.setWidth(100); 

//add to summary 
jRSummary.addElement(reportElem); 

(最困难的部分是要找出如何创建ComponentKey对象)

注:为了使用该表中,子数据元素需要被创建。

+0

请问您为什么使用“jr”? 我创建HtmlComponent,它与我需要创建componentKey的相同。我得到以下错误'没有找到名称为htmlComponent的组件管理器,命名空间为http:// jasperreports.sourceforge.net/htmlcomponent' – michdraft 2014-04-03 14:23:49