Java 使用 EasyExcel 写入 Excel 表格的同时存数据到数据库
在调用 service 存数据到数据库的同时,可以在适当的位置调用 EasyExcel 的写入方法。具体修改代码如下:
// 引入easyexcel的相关依赖 import com.alibaba.excel.EasyExcel;
// 在调用service存数据到数据库的同时,写入excel表格 schResService.addRes(schRes); EasyExcel.write('filename.xlsx', SchRes.class).sheet('Sheet1').doWrite(Collections.singletonList(schRes));
// 注意:这里的'filename.xlsx'是要写入的文件名,SchRes.class是要写入的数据类型,sheet('Sheet1')是要写入的sheet名,doWrite()方法中的参数是要写入的数据,这里只写了一条数据,如果有多条需要写入,可以将数据放在List中传入doWrite()方法。
classes.forEach(x -> {
int majorIndex = data.getDepts().indexOf(x.getDept());
int coursesIndex = data.getCourses().indexOf(x.getCourse());
int roomsIndex = data.getRooms().indexOf(x.getRoom());
int instructorsIndex = data.getInstructors().indexOf(x.getInstructor());
int meetingTimeIndex = data.getMeetingTimes().indexOf(x.getMeetingTime());
schRes.setClassNumb(classNumb);
schRes.setDepartent(data.getDepts().get(majorIndex).getName());
schRes.setCourse(data.getCourses().get(coursesIndex).getName());
schRes.setNumber(data.getCourses().get(coursesIndex).getNumber());
schRes.setMaxofs(x.getCourse().getMaxNumbOfStudents());
schRes.setRoom(x.getRoom().getNumber());
schRes.setCapacity(x.getRoom().getSeatingCapacity());
schRes.setInsname(data.getInstructors().get(instructorsIndex).getName());
schRes.setInsid(data.getInstructors().get(instructorsIndex).getId());
schRes.setMtime(data.getMeetingTimes().get(meetingTimeIndex).getTime());
schRes.setMid(data.getMeetingTimes().get(meetingTimeIndex).getId());
schResService.addRes(schRes);
// 在这里写入Excel表格
EasyExcel.write('filename.xlsx', SchRes.class).sheet('Sheet1').doWrite(Collections.singletonList(schRes));
System.out.print(" ");
System.out.print(String.format("%1$02d ", classNumb) + " | ");
System.out.print(String.format("%1$4s", data.getDepts().get(majorIndex).getName()) + " | ");
System.out.print(String.format("%1$21s", data.getCourses().get(coursesIndex).getName() +
"(" + data.getCourses().get(coursesIndex).getNumber() + "," +
x.getCourse().getMaxNumbOfStudents()) + ") | ");
System.out.print(String.format("%1$10s", data.getRooms().get(roomsIndex).getNumber() +
"(" + x.getRoom().getSeatingCapacity()) + ") | ");
System.out.print(String.format("%1$15s", data.getInstructors().get(instructorsIndex).getName() +
"(" + data.getInstructors().get(instructorsIndex).getId() + ")") + "|");
System.out.println(data.getMeetingTimes().get(meetingTimeIndex).getTime() +
"(" + data.getMeetingTimes().get(meetingTimeIndex).getId() + ")");
classNumb++;
});
注意:
- 以上代码示例仅供参考,具体实现可能需要根据您的实际情况进行调整。
- 确保已正确引入 EasyExcel 的依赖库。
- 可以根据需要修改文件名、Sheet 名以及写入的数据。
- 可以使用 List 存储多个数据并一次性写入 Excel 表格。
- 在实际应用中,建议将写入 Excel 的操作放在单独的方法中,以提高代码可读性和可维护性。
- 为了提高效率,建议将 EasyExcel 写入操作放在数据库操作完成之后进行。
通过以上步骤,您可以轻松实现将数据同时写入 Excel 表格和数据库,并提高开发效率。
原文地址: https://www.cveoy.top/t/topic/m7Fd 著作权归作者所有。请勿转载和采集!