LazyValidatorForm

本文探讨了如何使用Java实现多Sheet的Excel文件导出,并详细解释了一个关于Map对象在方法间传递时遇到的引用类型问题。通过具体代码示例,展示了如何设置导出参数以达到预期的效果。

1. private Map formObjGenerationMKey(ActionForm form) {

//TODO:为什么,方法里map有值,而对应调用方法中的map缺没值呢?map不是引用类型吗?

LazyValidatorForm lazyForm = (LazyValidatorForm) form;

return lazyForm.getMap();

}

 

2.

/**

* 导出多sheet的excel文件

* @throws JRException 

* @throws IOException 

*/

public void servletExportMultiSheetXls(String[] arr, List[] list, Map[] maps,String fileName) throws JRException, IOException {

ArrayList<JasperPrint> jaserPrints = new ArrayList<JasperPrint>();

JasperPrint jasperPrint = null;

OutputStream output = response.getOutputStream();

response.setContentType(getContentType(DocType.XLS));

response.setHeader("Content-Disposition", "attachment; filename=\"" + URLEncoder.encode(fileName, "UTF-8") + "\"");

for (int i = 0; i < arr.length; i++) {

JRDataSource dataSource = new JRBeanCollectionDataSource(list[i]);

jasperPrint = this.getJasperPrint(arr[i], maps[i], dataSource);

jaserPrints.add(jasperPrint);

}

JRAbstractExporter exporter = getJRExporter(DocType.XLS);

exporter.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, output);

exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT_LIST, jaserPrints);

exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE); // 删除记录最下面的空行   

exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);// 删除多余的ColumnHeader   

exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);// 显示边框   

//exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,true);

exporter.exportReport();

}


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值