给定这样一个数据,根据week和segment填表,如果让我用excel实现,这是很容易的,那让前端去实现呢?需要用什么办法?
[{
"teacherId": "TE156441313011606541662",
"address": "3年级2班",
"week": 1,
"teacherName": "李艳艳",
"segment": 1,
"subjectName": "语文"
}, {
"teacherId": "TE156441313011606541662",
"address": "3年级2班",
"week": 1,
"teacherName": "李艳艳",
"segment": 3,
"subjectName": "语文"
}, {
"teacherId": "TE156441313011606541662",
"address": "3年级2班",
"week": 2,
"teacherName": "李艳艳",
"segment": 7,
"subjectName": "语文"
}, {
"teacherId": "TE156441313011606541662",
"address": "3年级2班",
"week": 2,
"teacherName": "李艳艳",
"segment": 2,
"subjectName": "语文"
}, {
"teacherId": "TE156441313011606541662",
"address": "3年级2班",
"week": 3,
"teacherName": "李艳艳",
"segment": 8,
"subjectName": "语文"
}, {
"teacherId": "TE156441313011606541662",
"address": "3年级2班",
"week": 3,
"teacherName": "李艳艳",
"segment": 4,
"subjectName": "语文"
}, {
"teacherId": "TE156441313011606541662",
"address": "3年级2班",
"week": 4,
"teacherName": "李艳艳",
"segment": 7,
"subjectName": "语文"
}, {
"teacherId": "TE156441313011606541662",
"address": "3年级2班",
"week": 4,
"teacherName": "李艳艳",
"segment": 3,
"subjectName": "语文"
}, {
"teacherId": "TE156441313011606541662",
"address": "3年级2班",
"week": 5,
"teacherName": "李艳艳",
"segment": 7,
"subjectName": "语文"
}, {
"teacherId": "TE156441313011606541662",
"address": "3年级2班",
"week": 5,
"teacherName": "李艳艳",
"segment": 8,
"subjectName": "语文"
}]
WeekEntity.java
package test.testEasyPoi;
import cn.afterturn.easypoi.excel.annotation.Excel;
/**
* @author *cruder
* @version 1.0
* @since 1521/1/23 19:11
*/
public class WeekEntity {
@Excel(name = "星期一", height = 15, width = 10, isImportField = "true_st")
private String monday;
@Excel(name = "星期二", height = 15, width = 10, isImportField = "true_st")
private String tuesday;
@Excel(name = "星期三", height = 15, width = 10, isImportField = "true_st")
private String wednesday;
@Excel(name = "星期四", height = 15, width = 10, isImportField = "true_st")
private String thursday;
@Excel(name = "星期五", height = 15, width = 10, isImportField = "true_st")
private String friday;
@Excel(name = "星期六", height = 15, width = 10, isImportField = "true_st")
private String saturday;
@Excel(name = "星期天", height = 15, width = 10, isImportField = "true_st")
private String sunday;
public WeekEntity(String monday, String tuesday, String wednesday, String thursday, String friday, String saturday, String sunday) {
this.monday = monday;
this.tuesday = tuesday;
this.wednesday = wednesday;
this.thursday = thursday;
this.friday = friday;
this.saturday = saturday;
this.sunday = sunday;
}
public void setCourseInfo(int week,String courseInfo){
switch (week){
case 1:this.monday = courseInfo;break;
case 2:this.tuesday = courseInfo;break;
case 3:this.wednesday = courseInfo;break;
case 4:this.thursday = courseInfo;break;
case 5:this.friday = courseInfo;break;
case 6:this.saturday = courseInfo;break;
case 7:this.monday = courseInfo;break;
default:break;
}
}
}
static void test06() throws IOException {
//模拟一个教师一个星期有10节课
JSONArray jsonArray = new JSONArray();
for (int i = 1; i <=5 ; i++) {
for (int j = 0; j <2 ; j++) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("teacherName","李艳艳");
jsonObject.put("teacherId","TE156441313011606541662");
jsonObject.put("subjectName","语文");
jsonObject.put("address","3年级2班");
jsonObject.put("week",i);
jsonObject.put("segment",(int)(1+Math.random()*8));
jsonArray.add(jsonObject);
}
}
System.out.println(JSON.toJSONString(jsonArray));
List<WeekEntity> weekEntities = new ArrayList<>();
for (int i = 1; i <=8 ; i++) {
weekEntities.add(new WeekEntity("","","","","","",""));
}
for (int i = 0; i <jsonArray.size() ; i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
int segment = jsonObject.getIntValue("segment");
int week = jsonObject.getIntValue("week");
String courseInfo = jsonObject.getString("subjectName")+"\n"+jsonObject.getString("address");
weekEntities.get(segment - 1).setCourseInfo(week,courseInfo);
}
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("教师课程表","教师课程表"),WeekEntity.class,weekEntities);
//原始方法
Sheet sheet = workbook.createSheet("教师课程表2");
Row row1 = sheet.createRow(0);
Cell titleCell = row1.createCell(0);
titleCell.setCellValue("五年级二班课程表");
CellStyle styleTitle =getStyle(workbook,(short)14,"楷体");
//标题合并
CellRangeAddress regionTitle = new CellRangeAddress(0, 0, 0, 6);
sheet.addMergedRegion(regionTitle);
titleCell.setCellStyle(styleTitle);
Row row2 = sheet.createRow(1);
for (int i = 0; i <7 ; i++) {
Cell cell = row2.createCell(i);
cell.setCellValue("星期"+(i+1));
cell.setCellStyle(getStyle(workbook,(short)12,"仿宋"));
}
for (int i = 0; i <jsonArray.size() ; i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
Row row = sheet.getRow(jsonObject.getIntValue("segment")+1);
if(row==null){
row = sheet.createRow(jsonObject.getIntValue("segment")+1);
}
Cell cell = row.createCell(jsonObject.getIntValue("week")-1);
cell.setCellValue(jsonObject.getString("subjectName")+"\n"+jsonObject.getString("address"));
CellStyle cellStyle = getStyle(workbook, (short) 10, "仿宋");
//自动换行
cellStyle.setWrapText(true);
cell.setCellStyle(cellStyle);
}
FileOutputStream fos = new FileOutputStream("D:/教师课程表.xls");
workbook.write(fos);
fos.close();
}
输出结果: