我有一个要求,我需要以excel格式生成报告。将动态生成Excel工作表的表格。我想知道是否有一种命名这些动态生成的工作表的方法。使用net.sf.jasperreports.export.xls.sheet.names。{arbitrary_name}属性我们只能命名我们知道的工作表。对于其他工作表jasper将默认名称设为“Page X”,依此类推。 感谢
答案 0 :(得分:2)
您可以使用Page Header中的line元素或任何位置动态地为单独的工作表命名。
注意:我们可以在元素级别设置此属性而不是在报告级别,这就是我在示例中使用line作为元素的原因。
示例:
<line>
<reportElement x="140" y="17" width="50" height="1">
<propertyExpression name="net.sf.jasperreports.export.xls.sheet.name"><![CDATA[$F{TERRITORY}]]></propertyExpression>
</reportElement>
</line>
答案 1 :(得分:1)
您可以准备一份报告列表并将其添加到JasperPrint列表中。
最后,您可以将列表中所有工作表的名称设置为:
exporterXLS.setParameter(JRXlsAbstractExporterParameter.SHEET_NAMES, new String[] {"sheet one", "sheet two",
"sheet three"});
其中exporterXLS是JRXlsExporter类的实例。
下面是我上面描述的更完整的例子:
Connection con = this.jdbcTemplate.getDataSource().getConnection();
Map<String, String> hashmap = new HashMap<String, String>();
hashmap.put("ReportQuery", this.ReportQuery);
JasperReport myJasperReport = JasperCompileManager.compileReport(this.reportJRXML);
JasperPrint myJasperPrint = JasperFillManager.fillReport(myJasperReport, hashmap, con);
List<JasperPrint> jprintList = new ArrayList<JasperPrint>();
jprintList.add(myJasperPrint);
OutputStream outputfile = new FileOutputStream(new File(this.outputExcel));
JRXlsExporter exporterXLS = new JRXlsExporter();
exporterXLS.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jprintList);
exporterXLS.setParameter(JRExporterParameter.OUTPUT_STREAM, outputfile);
exporterXLS.setParameter(JRXlsAbstractExporterParameter.IS_COLLAPSE_ROW_SPAN, Boolean.TRUE);
exporterXLS.setParameter(JRXlsAbstractExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_COLUMNS, Boolean.TRUE);
exporterXLS.setParameter(JRXlsAbstractExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
exporterXLS.setParameter(JRXlsAbstractExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
exporterXLS.setParameter(JRXlsAbstractExporterParameter.IS_DETECT_CELL_TYPE, Boolean.FALSE);
exporterXLS.setParameter(JRXlsAbstractExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
exporterXLS.setParameter(JRXlsAbstractExporterParameter.IS_IGNORE_GRAPHICS, Boolean.TRUE);
exporterXLS.setParameter(JRXlsAbstractExporterParameter.SHEET_NAMES, new String[] {"first report"});
exporterXLS.exportReport();
答案 2 :(得分:0)
使用iReport Designer,您需要按照以下步骤操作:
如果你想直接在JRXML文件中更改它,你需要找到你的元素并向其添加以下propertyExpression(使用字段作为工作表名称的输入):
<propertyExpression name="net.sf.jasperreports.export.xls.sheet.name">
<![CDATA[$F{FieldName}]]>
</propertyExpression>