帆软报表通过excel生成html,多个报表导出一个Excel

将报表模板读入Java程序,给模板中参数赋值,将不同参数值对应的报表内容在工作簿排放好,对应 Excel 的不同Sheet ,导出Excel。

2.1 读入模板// 未执行模板工作薄

TemplateWorkBook workbook = TemplateWorkBookIO.readTemplateWorkBook(

"Gettingstarted.cpt");

2.2 给参数赋值

以第一个执行后的结果工作薄 rworkbook 作为容器,添加其他地区的统计报表,因此先将 rworkbook 中的第一个 sheet 重命名为华东,表示华东地区的数据。// 参数值为China计算结果,将结果保存至rworkbook

Parameter[] parameters = workbook.getParameters();

java.util.Map parameterMap = new java.util.HashMap();

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

parameterMap.put(parameters[i].getName(), "华东");

}

PageWorkBook rworkbook = (PageWorkBook)workbook.execute(parameterMap,new PageActor());

rworkbook.setReportName(0, "华东");

改变参数值后,将华北地区的执行结果加入工作簿。rworkbook.setReportName(0, "华东");

改变参数值为华北,执行获得结果报表 PageReport,加入结果工作薄

// 清空parametermap,将参数值改为华北,计算后获得ResultReport

parameterMap.clear();

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

parameterMap.put(parameters[i].getName(), "华北");

}

PageWorkBook rworkbook2 = (PageWorkBook)workbook.execute(parameterMap,new PageActor());

PageReport rreport2 = rworkbook2.getPageReport(0);

rworkbook.addReport("华北", rreport2);

2.3 导出工作薄// 定义输出流

FileOutputStream outputStream;

// 将结果工作薄导出为Excel文件

outputStream = new FileOutputStream(new File("E:\\ExcelExport.xls"));PageExcelExporter excelExport = new PageExcelExporter(ReportUtils.getPaperSettingListFromWorkBook(workbook));

ExcelExport.export(outputStream, workbook.execute(parameterMap));

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现一对多的Excel报表导出可以使用Java中的Apache POI库。下面是一个简单的示例,假设我们要导出一个学校的学生信息,每个学生有多个科目成绩,需要在一个Excel中显示。 首先,我们需要导入POI库: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; ``` 然后,我们需要创建一个Workbook对象来表示我们的Excel文件: ```java Workbook workbook = new XSSFWorkbook(); ``` 接下来,我们需要创建一个Sheet对象来表示Excel文件中的一个Sheet: ```java Sheet sheet = workbook.createSheet("学生信息"); ``` 然后,我们需要编写代码来添加表头和数据。这里我们假设我们有一个List<Student>对象,每个Student对象包含学生的基本信息和多个科目成绩: ```java List<Student> students = new ArrayList<>(); // 添加学生信息和科目成绩 // 创建表头 Row headerRow = sheet.createRow(0); Cell headerCell = headerRow.createCell(0); headerCell.setCellValue("姓名"); headerCell = headerRow.createCell(1); headerCell.setCellValue("性别"); headerCell = headerRow.createCell(2); headerCell.setCellValue("年龄"); // 列名从第3列开始 int column = 3; List<String> subjectNames = new ArrayList<>(); for (Student student : students) { // 添加学生基本信息 Row row = sheet.createRow(sheet.getLastRowNum() + 1); Cell cell = row.createCell(0); cell.setCellValue(student.getName()); cell = row.createCell(1); cell.setCellValue(student.getGender()); cell = row.createCell(2); cell.setCellValue(student.getAge()); // 添加科目成绩 for (Score score : student.getScores()) { String subjectName = score.getSubjectName(); if (!subjectNames.contains(subjectName)) { // 新科目,添加列名 subjectNames.add(subjectName); headerCell = headerRow.createCell(column); headerCell.setCellValue(subjectName); column++; } int columnIndex = subjectNames.indexOf(subjectName) + 3; cell = row.createCell(columnIndex); cell.setCellValue(score.getScore()); } } ``` 最后,我们需要将Workbook对象写入到文件中: ```java try (OutputStream outputStream = new FileOutputStream("学生信息.xlsx")) { workbook.write(outputStream); } catch (IOException e) { e.printStackTrace(); } ``` 这样,我们就完成了一个简单的一对多的Excel报表导出

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值