From 9670477f51ec921c85b6200ec6ba999949d6927e Mon Sep 17 00:00:00 2001 From: luke Date: Sat, 21 Jun 2025 10:00:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=BC=E5=AE=B9doc/xls=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E7=9A=84=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 10 +++++++ .../doc/service/impl/ExcelImporter.java | 15 +++++++---- .../domain/doc/service/impl/WordImporter.java | 27 +++++++++++++++---- 3 files changed, 42 insertions(+), 10 deletions(-) diff --git a/pom.xml b/pom.xml index 2f2ce0a..9f0a20e 100644 --- a/pom.xml +++ b/pom.xml @@ -39,6 +39,7 @@ 2.0.29 5.2.3 5.2.3 + 5.2.3 8.0.33 3.5.5 @@ -190,6 +191,11 @@ poi-ooxml ${poi-ooxml.version} + + org.apache.poi + poi-scratchpad + ${poi-scratchpad.version} + @@ -346,6 +352,10 @@ org.apache.poi poi-ooxml + + org.apache.poi + poi-scratchpad + mysql diff --git a/src/main/java/com/knowledge/base/domain/doc/service/impl/ExcelImporter.java b/src/main/java/com/knowledge/base/domain/doc/service/impl/ExcelImporter.java index c84bb80..d94faee 100644 --- a/src/main/java/com/knowledge/base/domain/doc/service/impl/ExcelImporter.java +++ b/src/main/java/com/knowledge/base/domain/doc/service/impl/ExcelImporter.java @@ -1,9 +1,7 @@ package com.knowledge.base.domain.doc.service.impl; -/** - * @author Luke.ye - * @date 2025/5/25 14:54 - */ + +import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.factory.annotation.Value; @@ -15,6 +13,10 @@ import java.nio.file.Path; import java.util.Iterator; import java.util.Set; +/** + * @author Luke.ye + * @date 2025/5/25 14:54 + */ @Component public class ExcelImporter extends AbstractBaseFileImporter { @@ -43,8 +45,11 @@ public class ExcelImporter extends AbstractBaseFileImporter { @Override protected String extractContent(Path path) throws IOException { + String fileName = path.getFileName().toString().toLowerCase(); + boolean isXlsx = fileName.endsWith(".xlsx"); + try (FileInputStream fis = new FileInputStream(path.toFile()); - Workbook workbook = new XSSFWorkbook(fis)) { + Workbook workbook = isXlsx ? new XSSFWorkbook(fis) : new HSSFWorkbook(fis)) { Sheet sheet = workbook.getSheetAt(0); StringBuilder sb = new StringBuilder(); diff --git a/src/main/java/com/knowledge/base/domain/doc/service/impl/WordImporter.java b/src/main/java/com/knowledge/base/domain/doc/service/impl/WordImporter.java index 37ee013..2d06bbd 100644 --- a/src/main/java/com/knowledge/base/domain/doc/service/impl/WordImporter.java +++ b/src/main/java/com/knowledge/base/domain/doc/service/impl/WordImporter.java @@ -1,6 +1,7 @@ package com.knowledge.base.domain.doc.service.impl; import com.knowledge.base.domain.common.enums.DocTypeEnum; +import org.apache.poi.hwpf.HWPFDocument; import org.springframework.stereotype.Component; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; @@ -44,12 +45,28 @@ public class WordImporter extends AbstractBaseFileImporter { @Override protected String extractContent(Path path) throws IOException { - try (XWPFDocument document = new XWPFDocument(new FileInputStream(path.toFile()))) { - StringBuilder content = new StringBuilder(); - for (XWPFParagraph para : document.getParagraphs()) { - content.append(para.getText()).append("\n"); + String fileName = path.getFileName().toString().toLowerCase(); + + if (fileName.endsWith(".docx")) { + // 处理 .docx + try (FileInputStream fis = new FileInputStream(path.toFile()); + XWPFDocument document = new XWPFDocument(fis)) { + + StringBuilder content = new StringBuilder(); + for (XWPFParagraph para : document.getParagraphs()) { + content.append(para.getText()).append("\n"); + } + return content.toString().trim(); } - return content.toString().trim(); + } else if (fileName.endsWith(".doc")) { + // 处理 .doc + try (FileInputStream fis = new FileInputStream(path.toFile()); + HWPFDocument doc = new HWPFDocument(fis)) { + + return doc.getDocumentText().trim(); + } + } else { + throw new IllegalArgumentException("不支持的 Word 文件类型: " + fileName); } } }