在jasper报告中以excel命名动态生成的工作表名称

时间:2012-06-06 11:40:42

标签: excel jasper-reports ireport

我有一个要求,我需要以excel格式生成报告。将动态生成Excel工作表的表格。我想知道是否有一种命名这些动态生成的工作表的方法。使用net.sf.jasperreports.export.xls.sheet.names。{arbitrary_name}属性我们只能命名我们知道的工作表。对于其他工作表jasper将默认名称设为“Page X”,依此类推。 感谢

3 个答案:

答案 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中的

使用iReport Designer,您需要按照以下步骤操作:

  1. 转到元素的属性
  2. 滚动到名为&#39;属性&#39;
  3. 的媒体资源
  4. 单击3点按钮以打开“属性”窗口
  5. 点击添加
  6. 输入&#34; net.sf.jasperreports.export.xls.sheet.name&#34;在名称
  7. 勾选&#39;使用表达式&#39;
  8. 按下值字段右侧的按钮和
  9. 选择您的字段,变量或参数。
  10. JRXML 中的

    如果你想直接在JRXML文件中更改它,你需要找到你的元素并向其添加以下propertyExpression(使用字段作为工作表名称的输入):

     <propertyExpression name="net.sf.jasperreports.export.xls.sheet.name">
          <![CDATA[$F{FieldName}]]>
     </propertyExpression>