diff --git a/HomeWork-java/pom.xml b/HomeWork-java/pom.xml index 86fcce0da1fea94e7397a666f0ca7738d86280a8..9da115adcce897f096754ad223a2f9cd1f0fa2b0 100644 --- a/HomeWork-java/pom.xml +++ b/HomeWork-java/pom.xml @@ -283,6 +283,27 @@ 4.0.1 + + + + org.apache.poi + poi + 3.17 + + + org.apache.poi + poi-ooxml + 3.17 + + + org.apache.poi + poi-scratchpad + 3.17 + + + + + src diff --git a/HomeWork-java/src/com/wetoband/template/action/ToolTemplateAction.java b/HomeWork-java/src/com/wetoband/template/action/ToolTemplateAction.java index 0e1bcab26e118523991d01b819cd8050fa64fa9e..97f6165db175b6cc66a9cb8e04fc3fbf497d844b 100644 --- a/HomeWork-java/src/com/wetoband/template/action/ToolTemplateAction.java +++ b/HomeWork-java/src/com/wetoband/template/action/ToolTemplateAction.java @@ -10,6 +10,7 @@ import com.wetoband.template.entity.*; import com.wetoband.template.service.*; import com.wetoband.template.service.impl.*; import com.wetoband.template.util.R; +import lombok.SneakyThrows; import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; @@ -17,6 +18,7 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.multipart.MultipartFile; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.Part; import java.io.IOException; import java.sql.Connection; import java.text.SimpleDateFormat; @@ -36,6 +38,8 @@ public class ToolTemplateAction extends ActionToolBase { QuestionService questionService=IOC.getBean(QuestionServiceImpl.class); NoticeService noticeService=IOC.getBean(NoticeServiceImpl.class); + WordService wordService = IOC.getBean(WordServiceImpl.class); + @Action public R get(HttpServletRequest request ) throws Exception { return R.ok().put("msg", "Hello World").message("GET请求成功"); @@ -153,6 +157,16 @@ public class ToolTemplateAction extends ActionToolBase { return R.ok().put("data",question); } + //根据word文档发布作业 + + @Action + public R assignHomeworkByWord(HttpServletRequest request){ + String homework = wordService.assHomeworkByWord(request); + return R.ok().put("data",homework); + } + + + // //文件上传miniIo // @Action // public R fileUploadService(HttpServletRequest request) throws ServletException, IOException {//前端要传一个名字叫 file 的参数 diff --git a/HomeWork-java/src/com/wetoband/template/service/WordService.java b/HomeWork-java/src/com/wetoband/template/service/WordService.java new file mode 100644 index 0000000000000000000000000000000000000000..0abca7889ab609d938050a5d15fdd7bb05ac00e8 --- /dev/null +++ b/HomeWork-java/src/com/wetoband/template/service/WordService.java @@ -0,0 +1,7 @@ +package com.wetoband.template.service; + +import javax.servlet.http.HttpServletRequest; + +public interface WordService { + String assHomeworkByWord(HttpServletRequest request); +} diff --git a/HomeWork-java/src/com/wetoband/template/service/impl/WordServiceImpl.java b/HomeWork-java/src/com/wetoband/template/service/impl/WordServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..23e43367cbe8f14f9844dc1a662a1a799adaaa2f --- /dev/null +++ b/HomeWork-java/src/com/wetoband/template/service/impl/WordServiceImpl.java @@ -0,0 +1,70 @@ +package com.wetoband.template.service.impl; + +import com.wetoband.template.service.WordService; +import lombok.SneakyThrows; +import org.apache.poi.POIXMLDocument; +import org.apache.poi.hwpf.extractor.WordExtractor; +import org.apache.poi.openxml4j.opc.OPCPackage; +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.apache.poi.xwpf.usermodel.XWPFParagraph; +import org.springframework.stereotype.Service; +import org.springframework.util.FileCopyUtils; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.Part; +import java.io.File; +import java.io.InputStream; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +@Service +public class WordServiceImpl implements WordService { + @SneakyThrows + @Override + public String assHomeworkByWord(HttpServletRequest request) { + + MultipartFile file = (MultipartFile) request.getPart("file"); + + String textFileName=file.getOriginalFilename(); + Map wordMap = new LinkedHashMap();//创建一个map对象存放word中的内容 + try { + if(textFileName.endsWith(".doc")){ //判断文件格式 + InputStream fis = file.getInputStream(); + WordExtractor wordExtractor = new WordExtractor(fis);//使用HWPF组件中WordExtractor类从Word文档中提取文本或段落 + int i=1; + for(String words : wordExtractor.getParagraphText()){//获取段落内容 + System.out.println(words); + wordMap.put("DOC文档,第("+i+")段内容",words); + i++; + } + fis.close(); + } + if(textFileName.endsWith(".docx")){ + File uFile = new File("tempFile.docx");//创建一个临时文件 + if(!uFile.exists()){ + uFile.createNewFile(); + } + FileCopyUtils.copy(file.getBytes(), uFile);//复制文件内容 + OPCPackage opcPackage = POIXMLDocument.openPackage("tempFile.docx");//包含所有POI OOXML文档类的通用功能,打开一个文件包。 + XWPFDocument document = new XWPFDocument(opcPackage);//使用XWPF组件XWPFDocument类获取文档内容 + List paras = document.getParagraphs(); + int i=1; + for(XWPFParagraph paragraph : paras){ + String words = paragraph.getText(); + System.out.println(words); + wordMap.put("DOCX文档,第("+i+")段内容",words); + i++; + } + uFile.delete(); + } + } catch (Exception e) { + e.printStackTrace(); + } + System.out.println(wordMap); + + + return null; + } +}