多张报表导出到一个多sheet页excel
业务需求:
通过勾选不同的报表名称,然后直接执行导出excel。并且这些报表需要统一导入到一个excel的多个sheet页中,并且对某些报表可能需要增加一些类似’已审核’之类的图片(展现时并没有这些图片或者文字)
解决方案:
润乾的报表展现后导出excel都是导到单独的excel中,将多个报表导入到同一个excel里可以使用api进行导出,通过创建excel的实例来决定是否导多个sheet.增加审核之类的图片只需要通过参数来控制一个图片文件或者字段即可.
实现步骤:
首先以两个报表为例,其中一张增加一个审核的图片,并通过参数来控制是否展现.
然后在api中将此参数传递到报表中即可。
对于导入到同一个excel中,将报表名称以字符串组形式接收到,然后只要在循环计算报表时不再次实例化 ExcelReport即可,具体代码如下:
String[] ragFileNameTemp = req.getParameterValues(“raqFileName”);
String[] ragFileName = ragFileNameTemp[0].split(“,”);
// 构建报表引擎计算环境
List<String> list = new ArrayList<String>();
for (int i = 0; i < ragFileName.length; i++) {
list.add(ragFileName[i]);
}
ExcelReport er = new ExcelReport();//ExcelReport实例化的位置很关键,会取决于是否是一个excel
for (int num = 0; num < list.size(); num++) {
Context cxt = new Context();
ReportDefine rd = null;
try {
rd = (ReportDefine) ReportUtils.read(list.get(num));
Engine engine = new Engine(rd, cxt); // 构造报表引擎
IReport iReport = engine.calc(); // 运算报表
// ReportUtils.exportToExcel(“D://aa.xls”, iReport, false);
er.export(ragFileName[num], iReport);
} catch (Exception e) {
}
最终将多张报表导入到一个excel,并且可以对导出的报表进行一些设置,例如增加图片等。