java导出excel报表,条件是学生对应三个科目,是一对多的关系.合并第一列前三行,第二列保持不变添加表头科目1,2,3
时间: 2023-09-19 16:09:08 浏览: 43
好的,你可以使用Apache POI来实现java导出excel报表。以下是示例代码:
```java
// 创建工作簿
Workbook workbook = new XSSFWorkbook();
// 创建工作表
Sheet sheet = workbook.createSheet("学生成绩表");
// 合并第一列前三行
CellRangeAddress region = new CellRangeAddress(0, 2, 0, 0);
sheet.addMergedRegion(region);
// 创建表头行
Row headerRow = sheet.createRow(0);
// 添加第一列表头
Cell headerCell = headerRow.createCell(0);
headerCell.setCellValue("学生姓名");
// 添加科目1表头
headerCell = headerRow.createCell(1);
headerCell.setCellValue("科目1");
// 添加科目2表头
headerCell = headerRow.createCell(2);
headerCell.setCellValue("科目2");
// 添加科目3表头
headerCell = headerRow.createCell(3);
headerCell.setCellValue("科目3");
// 获取学生成绩数据并遍历
List<Student> students = getStudentData();
int rowIndex = 1;
for (Student student : students) {
// 创建行
Row row = sheet.createRow(rowIndex++);
// 添加学生姓名
Cell cell = row.createCell(0);
cell.setCellValue(student.getName());
// 添加科目1成绩
cell = row.createCell(1);
cell.setCellValue(student.getScore1());
// 添加科目2成绩
cell = row.createCell(2);
cell.setCellValue(student.getScore2());
// 添加科目3成绩
cell = row.createCell(3);
cell.setCellValue(student.getScore3());
}
// 输出到文件或输出流中
FileOutputStream outputStream = new FileOutputStream("学生成绩表.xlsx");
workbook.write(outputStream);
outputStream.close();
workbook.close();
```
其中,`getStudentData()` 方法返回的是一个包含学生成绩数据的列表,`Student` 类包含学生姓名、科目1、科目2、科目3成绩的属性。