Directorio de artículos
FácilExcel
EasyExcel es una herramienta de procesamiento de Excel rápida y concisa basada en Java que resuelve el desbordamiento de memoria de archivos grandes.
Le permite completar rápidamente la lectura, escritura y otras funciones de Excel sin considerar el rendimiento, la memoria y otros factores.
Introducir dependencias
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.1.3</version>
</dependency>
Estructura de la tabla
mesa de estudiantes
CREATE TABLE `student` (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '学生表ID',
`sname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '学生姓名',
`sno` bigint NOT NULL COMMENT '学号',
`sex` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '性别',
`age` int NOT NULL COMMENT '年龄',
`is_deleted` tinyint UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否删除',
PRIMARY KEY (`id`)
);
Horario de clase
CREATE TABLE `course` (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '课程表ID',
`cname` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '课程名',
`cno` bigint NOT NULL COMMENT '课程号',
`tno` bigint NOT NULL COMMENT '任教教师编码',
`is_deleted` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否删除',
PRIMARY KEY (`id`)
);
lista de profesores
CREATE TABLE `teacher` (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '教师表ID',
`tname` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '教师姓名',
`tno` bigint NOT NULL COMMENT '教师编号',
`sex` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '性别',
`age` int NOT NULL COMMENT '年龄',
`is_deleted` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否删除',
PRIMARY KEY (`id`)
);
Parte de los datos se cargaron al cargar varias hojas, por lo que actualmente hay datos en la tabla.
Estructura del proyecto
Descargar plantilla de clase de entidad
estudiantevo
@Data
public class StudentVo {
/**学生姓名**/
@ExcelProperty(value = "姓名",index = 0)
private String sname;
/**学号**/
@ExcelProperty(value = "学号",index = 1)
private Long sno;
/**性别**/
@ExcelProperty(value = "性别",index = 2)
private String sex;
/**年龄**/
@ExcelProperty(value = "年龄",index = 3)
private Integer age;
}
CursoVo
@Data
public class CourseVo {
/**课程名**/
@ExcelProperty(value = "课程名",index = 0)
private String cname;
/**课程号**/
@ExcelProperty(value = "课程号",index = 1)
private Long cno;
/**任教教师编号**/
@ExcelProperty(value = "任教教师编号",index = 2)
private Long tno;
}
profesorvo
@Data
public class TeacherVo {
/**教师姓名**/
@ExcelProperty(value = "姓名", index = 0)
private String tname;
/**教师编号**/
@ExcelProperty(value = "教师编号", index = 1)
private Long tno;
/**性别**/
@ExcelProperty(value = "性别", index = 2)
private String sex;
/**年龄**/
@ExcelProperty(value = "年龄", index = 3)
private Integer age;
}
Controlador
@RestController
@RequestMapping("/easyExcel")
public class EasyExcelController {
@Resource
private IEasyExcelService easyExcelService;
@PostMapping("excelExport")
public void excelExport(HttpServletResponse response){
easyExcelService.excelExport(response);
}
}
Servicio
Servicio EasyExcel
public interface IEasyExcelService {
void excelExport(HttpServletResponse response);
}
Servicio Estudiantil
public interface IStudentService extends IService<Student> {
}
Servicio de curso
public interface ICourseService extends IService<Course> {
}
Servicio de Maestros
public interface ITeacherService extends IService<Teacher> {
}
ServicioImpl
EasyExcelServiceImpl
@Service
public class EasyExcelServiceImpl implements IEasyExcelService {
@Resource
private StudentMapper studentMapper;
@Resource
private CourseMapper courseMapper;
@Resource
private TeacherMapper teacherMapper;
@Override
public void excelExport(HttpServletResponse response) {
try {
String fileName = "student";
ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).build();
WriteSheet studentInfo = EasyExcel.writerSheet(0,"student")
.head(StudentVo.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
.build();
WriteSheet courseInfo = EasyExcel.writerSheet(1,"course")
.head(CourseVo.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
.build();
WriteSheet teacherInfo = EasyExcel.writerSheet(2,"teacher")
.head(TeacherVo.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
.build();
List<Student> studentList = studentMapper.selectList(null);
List<Course> courseList = courseMapper.selectList(null);
List<Teacher> teacherList = teacherMapper.selectList(null);
excelWriter.write(studentList,studentInfo);
excelWriter.write(courseList,courseInfo);
excelWriter.write(teacherList,teacherInfo);
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition","attachment;filename="+fileName+".xlsx");
excelWriter.finish();
}catch (IOException e){
e.printStackTrace();
}
}
EstudianteServicioImpl
@Service
public class StudentServiceImpl extends ServiceImpl<StudentMapper, Student> implements IStudentService {
}
CursoServicioImpl
@Service
public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> implements ICourseService {
}
MaestroServicioImpl
@Service
public class TeacherServiceImpl extends ServiceImpl<TeacherMapper, Teacher> implements ITeacherService {
}
mapeador
EstudianteMapeador
public interface StudentMapper extends BaseMapper<Student> {
}
Mapeador de cursos
public interface CourseMapper extends BaseMapper<Course> {
}
MaestroMapeador
public interface TeacherMapper extends BaseMapper<Teacher> {
}
Proyecto de inicio
prueba
Utilice cartero para probar. El método de prueba es el siguiente:
después de la descarga, abra la tabla de Excel para ver el contenido.
Operación completada