From 4549e29f23e84a1d45f79aaaa55ef8b400c273c3 Mon Sep 17 00:00:00 2001 From: "liang.chao" <1360241448@qq.com> Date: Thu, 24 Jul 2025 13:34:00 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E7=A8=8B=E8=B4=A8=E9=87=8F=E5=88=86?= =?UTF-8?q?=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/FileUploadController.java | 4 ++ .../controller/DataAnalysisController.java | 63 ++++++++++++++++--- 2 files changed, 59 insertions(+), 8 deletions(-) diff --git a/securitycontrol-model/securitycontrol-files/src/main/java/com/securitycontrol/files/controller/FileUploadController.java b/securitycontrol-model/securitycontrol-files/src/main/java/com/securitycontrol/files/controller/FileUploadController.java index 6768dd9..3e46587 100644 --- a/securitycontrol-model/securitycontrol-files/src/main/java/com/securitycontrol/files/controller/FileUploadController.java +++ b/securitycontrol-model/securitycontrol-files/src/main/java/com/securitycontrol/files/controller/FileUploadController.java @@ -9,6 +9,10 @@ import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.binary.Base64; import org.apache.commons.io.FileUtils; +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.apache.poi.xwpf.usermodel.XWPFTable; +import org.apache.poi.xwpf.usermodel.XWPFTableCell; +import org.apache.poi.xwpf.usermodel.XWPFTableRow; import org.springframework.beans.factory.annotation.Value; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; diff --git a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/DataAnalysisController.java b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/DataAnalysisController.java index 0f5d80b..7ee172f 100644 --- a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/DataAnalysisController.java +++ b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/DataAnalysisController.java @@ -1,26 +1,27 @@ package com.securitycontrol.screen.controller; -import com.securitycontrol.common.core.utils.aes.StringHelper; import com.securitycontrol.common.core.web.controller.BaseController; import com.securitycontrol.common.core.web.domain.AjaxResult; import com.securitycontrol.common.core.web.page.TableDataInfo; -import com.securitycontrol.common.log.annotation.Log; -import com.securitycontrol.common.log.enums.OperationType; -import com.securitycontrol.entity.screen.dto.AccessMgeDto; import com.securitycontrol.entity.screen.dto.ScreenParamDto; -import com.securitycontrol.entity.screen.vo.AccessMgeVo; import com.securitycontrol.entity.screen.vo.DataAnalysisDetailVo; import com.securitycontrol.entity.screen.vo.ProjectQualityVo; import com.securitycontrol.screen.service.DataAnalysisService; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.apache.poi.xwpf.usermodel.XWPFTable; +import org.apache.poi.xwpf.usermodel.XWPFTableCell; +import org.apache.poi.xwpf.usermodel.XWPFTableRow; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import java.io.ByteArrayInputStream; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * @className:DataAnalysisController @@ -79,4 +80,50 @@ public class DataAnalysisController extends BaseController { } return AjaxResult.success(list); } + + @PostMapping("uploadProQuality") + public Map>> extractTablesFromWord(@RequestParam("file") MultipartFile file) { + Map>> result = new HashMap<>(); + + try { + // 验证文件类型 + if (!file.getOriginalFilename().endsWith(".docx")) { + throw new IllegalArgumentException("仅支持.docx格式的文件"); + } + + // 将文件内容读取到字节数组 + byte[] fileBytes = file.getBytes(); + + // 从字节数组创建输入流 + try (ByteArrayInputStream bis = new ByteArrayInputStream(fileBytes); + XWPFDocument document = new XWPFDocument(bis)) { + + // 提取所有表格 + List tables = document.getTables(); + + for (int i = 0; i < tables.size(); i++) { + XWPFTable table = tables.get(i); + List> tableData = new ArrayList<>(); + + // 处理每一行 + for (XWPFTableRow row : table.getRows()) { + List rowData = new ArrayList<>(); + + // 处理每个单元格 + for (XWPFTableCell cell : row.getTableCells()) { + rowData.add(cell.getText()); + } + + tableData.add(rowData); + } + + result.put("表格" + (i + 1), tableData); + } + } + } catch (Exception e) { + throw new RuntimeException("处理Word文档时出错: " + e.getMessage(), e); + } + + return result; + } }