From 78cec55647cad67f3225b44dcf7b2b34400060c9 Mon Sep 17 00:00:00 2001 From: wenyu441069198 <14186472+wenyu441069198@user.noreply.gitee.com> Date: Fri, 14 Jun 2024 17:56:48 +0800 Subject: [PATCH] =?UTF-8?q?init=E8=AF=BE=E7=A8=8B=E6=A0=87=E5=87=86?= =?UTF-8?q?=E5=AF=BC=E5=87=BAword?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 +++ .../controller/courses/CoursesController.java | 14 ++++++- .../service/courses/ICoursesService.java | 3 ++ .../impl/courses/CoursesServiceImpl.java | 39 ++++++++++++++++-- src/main/resources/templates/courses.docx | Bin 0 -> 35886 bytes 5 files changed, 58 insertions(+), 4 deletions(-) create mode 100644 src/main/resources/templates/courses.docx diff --git a/pom.xml b/pom.xml index a96b610..1bc5502 100644 --- a/pom.xml +++ b/pom.xml @@ -155,6 +155,12 @@ spring-boot-starter-data-redis + + + cn.afterturn + easypoi-spring-boot-starter + 4.1.3 + diff --git a/src/main/java/com/teaching/backend/controller/courses/CoursesController.java b/src/main/java/com/teaching/backend/controller/courses/CoursesController.java index 2b4e071..078809c 100644 --- a/src/main/java/com/teaching/backend/controller/courses/CoursesController.java +++ b/src/main/java/com/teaching/backend/controller/courses/CoursesController.java @@ -19,6 +19,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; import java.util.*; /** @@ -100,5 +101,16 @@ public class CoursesController { return ResultUtils.success("删除成功"); } - + /** + * 导出word + * @param response + * @throws Exception + */ + @ApiOperation("导出word") + @GetMapping(value = "/down") + public void test( HttpServletResponse response) throws Exception{ + //-------------------------查询课程通过课程id查 + String id = "de3100cad98f76be3176dd39aa748a9e"; + coursesService.down(response, id); + } } diff --git a/src/main/java/com/teaching/backend/service/courses/ICoursesService.java b/src/main/java/com/teaching/backend/service/courses/ICoursesService.java index 0a331c5..c69b060 100644 --- a/src/main/java/com/teaching/backend/service/courses/ICoursesService.java +++ b/src/main/java/com/teaching/backend/service/courses/ICoursesService.java @@ -8,6 +8,7 @@ import com.teaching.backend.model.entity.courses.Courses; import com.teaching.backend.model.query.CourseQuery; import com.teaching.backend.model.vo.courses.CoursesVO; +import javax.servlet.http.HttpServletResponse; import java.util.List; @@ -33,4 +34,6 @@ public interface ICoursesService extends IService { List getPagePageSize(int page, int pageSize); void updateCourse(CoursesDTO coursesDTO); + + void down(HttpServletResponse response, String id) throws Exception; } diff --git a/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java index 2e232cb..23bf545 100644 --- a/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java @@ -1,6 +1,7 @@ package com.teaching.backend.service.impl.courses; +import cn.afterturn.easypoi.word.WordExportUtil; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -27,15 +28,18 @@ import com.teaching.backend.model.vo.courses.CourseObjectivesTreeVO; import com.teaching.backend.model.vo.courses.CoursesVO; import com.teaching.backend.service.courses.ICoursesService; import com.teaching.backend.utils.CourseCode; +import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ResourceUtils; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.File; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -255,5 +259,34 @@ public class CoursesServiceImpl extends ServiceImpl impl coursesMapper.updateById(course); } + @Override + public void down(HttpServletResponse response, String id) throws Exception { + File rootPath = new File(ResourceUtils.getURL("classpath:").getPath()); //SpringBoot项目获取根目录的方式 + File templatePath = new File(rootPath.getAbsolutePath(),"/templates/courses.docx");//------------------需要模板的地址 + //准备导出数据 + //查询课程通过课程id查--课程简介 + Courses courses = this.getById(id); + System.out.println("课程:"+courses); + Map params = new HashMap(); + params.put("name",courses.getName()); + params.put("code",courses.getCode()); + params.put("nature",courses.getNature()); + params.put("credit",courses.getCredit()); + params.put("classhour",courses.getClasshours()); + params.put("description",courses.getDescription()); + + //查询课程目标 + + //根据模板+数据 导出文档 + XWPFDocument xwpfDocument = WordExportUtil.exportWord07(templatePath.getPath(), params); + + //文件名=课程名+课程标准 + String filename= courses.getName()+"课程标准.docx"; + //设置文件的打开方式和mime类型 + ServletOutputStream outputStream = response.getOutputStream(); + response.setHeader( "Content-Disposition", "attachment;filename=" + new String(filename.getBytes(),"ISO8859-1")); + response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document"); + xwpfDocument.write(outputStream); + } } diff --git a/src/main/resources/templates/courses.docx b/src/main/resources/templates/courses.docx new file mode 100644 index 0000000000000000000000000000000000000000..1500516789dbecffdc09b859733f68c60c513028 GIT binary patch literal 35886 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