1.导入pom.xml
需要先导入解析插件包
<!-- POI-word文件处理需要 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>4.1.2</version>
</dependency>
2.代码示例:
package com.common.utils;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.slf4j.Logger;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @ClassName WordAlansis
* @Description: java解析word代码示例
* @Author: mischen
* @date: 14:57 2022/11/25
* @Version 1.0
*/
public class WordAlansis {
public static void main(String[] args) {
String path ="C:\\Users\\Administrator\\Desktop\\公司资料\\面试\\1.docx";
// Map<String, String> getContentWps = getContentWps(path);
// System.out.println(getContentWps);
Map<String, String> getContentWps = getContentDocx(new File(path));
System.out.println(getContentWps);
}
/**
* 获取正文文件内容,docx方法
*
* @param file
* @return
*/
public static Map<String, String> getContentDocx(File file) {
Map<String, String> map = new HashMap();
StringBuffer content = new StringBuffer("");
String result = "0"; // 0表示获取正常,1表示获取异常
InputStream is = null;
Logger logger = null;
try {
//根据需求入参也可以改为文件路径,对应的输入流部分改为new File(路径)即可
is = new FileInputStream(file);
// 2007版本的word
XWPFDocument xwpf = new XWPFDocument(is); // 2007版本,仅支持docx文件处理
List<XWPFParagraph> paragraphs = xwpf.getParagraphs();
if (paragraphs != null && paragraphs.size() > 0) {
for (XWPFParagraph paragraph : paragraphs) {
if (!paragraph.getParagraphText().startsWith(" ")) {
content.append(paragraph.getParagraphText().trim()).append("\r\n");
} else {
content.append(paragraph.getParagraphText());
}
}
}
} catch (Exception e) {
logger.error("docx解析正文异常:" + e);
result = "1"; // 出现异常
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
logger.error("" + e);
}
}
map.put("result", result);
map.put("content", String.valueOf(content));
}
return map;
}
/**
* 获取正文文件内容,doc方法
*
* @param path
* @return
*/
public static Map<String, String> getContentDoc(String path) {
Map<String, String> map = new HashMap();
StringBuffer content = new StringBuffer("");
String result = "0"; // 0表示获取正常,1表示获取异常
InputStream is = null;
Logger logger = null;
try {
is = new FileInputStream(new File(path));
// 2003版本的word
WordExtractor extractor = new WordExtractor(is); // 2003版本 仅doc格式文件可处理,docx文件不可处理
String[] paragraphText = extractor.getParagraphText(); // 获取段落,段落缩进无法获取,可以在前添加空格填充
if (paragraphText != null && paragraphText.length > 0) {
for (String paragraph : paragraphText) {
if (!paragraph.startsWith(" ")) {
content.append(paragraph.trim()).append("\r\n");
} else {
content.append(paragraph);
}
}
}
} catch (Exception e) {
logger.error("doc解析正文异常:" + e);
result = "1"; // 出现异常
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
logger.error("" + e);
}
}
map.put("result", result);
map.put("content", content.toString());
}
return map;
}
/**
* 获取正文文件内容,wps方法
*
* @param path
* @return
*/
public static Map<String, String> getContentWps(String path) {
Map<String, String> map = new HashMap();
StringBuffer content = new StringBuffer("");
String result = "0"; // 0表示获取正常,1表示获取异常
InputStream is = null;
Logger logger = null;
try {
is = new FileInputStream(new File(path));
// wps版本word
HWPFDocument hwpf = new HWPFDocument(is);
WordExtractor wordExtractor = new WordExtractor(hwpf);
// 文档文本内容
String[] paragraphText1 = wordExtractor.getParagraphText();
if (paragraphText1 != null && paragraphText1.length > 0) {
for (String paragraph : paragraphText1) {
if (!paragraph.startsWith(" ")) {
content.append(paragraph.trim()).append("\r\n");
} else {
content.append(paragraph);
}
}
}
} catch (Exception e) {
logger.error("wps解析正文异常:" + e);
result = "1"; // 出现异常
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
logger.error("" + e);
}
}
map.put("result", result);
map.put("content", content.toString());
}
return map;
}
}