From f9a9c3b859960312b1bbb5f652b600745c646f0a Mon Sep 17 00:00:00 2001
From: pyx <3317187936@qq.com>
Date: Sun, 2 Mar 2025 12:33:22 +0800
Subject: [PATCH] =?UTF-8?q?3/2-12:32-word=E6=96=87=E6=A1=A3=E8=AF=95?=
=?UTF-8?q?=E9=AA=8C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
HomeWork-java/pom.xml | 21 ++++++
.../template/action/ToolTemplateAction.java | 14 ++++
.../template/service/WordService.java | 7 ++
.../service/impl/WordServiceImpl.java | 70 +++++++++++++++++++
4 files changed, 112 insertions(+)
create mode 100644 HomeWork-java/src/com/wetoband/template/service/WordService.java
create mode 100644 HomeWork-java/src/com/wetoband/template/service/impl/WordServiceImpl.java
diff --git a/HomeWork-java/pom.xml b/HomeWork-java/pom.xml
index 86fcce0..9da115a 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 0e1bcab..97f6165 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 0000000..0abca78
--- /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 0000000..23e4336
--- /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;
+ }
+}
--
Gitee