我是靠谱客的博主 靓丽银耳汤,这篇文章主要介绍Java提取Doc,Docx中的文本信息Java提取Doc,Docx中的文本信息,现在分享给大家,希望可以做个参考。

Java提取Doc,Docx中的文本信息

文章目录

  • Java提取Doc,Docx中的文本信息
    • 1 代码效果
    • 2 代码实现

1 代码效果

案例word,Doc,Docx2个版本都有
在这里插入图片描述
提取后效果docx
在这里插入图片描述
提取后效果doc
在这里插入图片描述

2 代码实现

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import java.io.InputStream; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang3.StringUtils; import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; /** * 将doc/docx 部分信息提取 * 推荐pom jdk1.8+ * <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.2.2</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-scratchpad</artifactId> <version>5.2.2</version> </dependency> <dependency> <groupId>com.deepoove</groupId> <artifactId>poi-tl</artifactId> <version>1.12.0</version> </dependency> */ public class TestWordToXml { @SuppressWarnings("resource") public static void main(String[] args) { try { final List<String> data = new ArrayList<String>(); final String attr = ".doc"; final String inPath = "F:\BiaoQian" + attr; final InputStream inputStream = Files.newInputStream(Paths.get(inPath)); if (inPath.endsWith("docx")) {//docx处理 final XWPFDocument docx = new XWPFDocument(inputStream).getXWPFDocument(); final Node bodyNode = docx.getDocument().getBody().getDomNode(); seeDocxNode(bodyNode,data); } else {//doc处理 final HWPFDocument document = new HWPFDocument(inputStream); System.out.println(document.getDocumentText().replaceAll("", " ")); //data.add(document.getDocumentText().replaceAll("", " ")); } Files.write(Paths.get("F:\BiaoQianXml.log"),data,Charset.forName("UTF-8")); System.out.println("解析完成"); } catch (Exception e) { e.printStackTrace(); } } /** * 递归遍历node * @param bodyNode * @param data */ @SuppressWarnings("static-access") private static void seeDocxNode(final Node node,final List<String> data) { final NodeList list = node.getChildNodes(); final NamedNodeMap attr = node.getAttributes(); String attrStr = "0"; String childStr = ""; String childStrName = ""; if (attr!=null) { attrStr = "" + attr.getLength(); } if (list!=null) { childStr = "" + list.getLength(); for (int i = 0; i < list.getLength(); i++) { final Node childNode = list.item(i); childStrName = childNode.getNodeName()+","+childStrName; } if (list.getLength()>0) { childStrName = "t子节点名称["+childStrName.substring(0,childStrName.length()-1)+"]"; } } String zhi = ""; if (StringUtils.isNotEmpty(node.getNodeValue())) { zhi = "t节点值:"+node.getNodeValue(); } if (node.TEXT_NODE==node.getNodeType()) {//放开这个可解析所有结构 data.add("节点类型:"+node.getNodeType()+"t属性个数:"+attrStr+"t子节点个数:"+childStr+"t节点名:"+node.getNodeName()+childStrName+zhi); } if (list!=null) { for (int i = 0; i < list.getLength(); i++) { final Node childNode = list.item(i); childStrName = childStrName + "," + childNode.getNodeName(); seeDocxNode(childNode, data); } } } }

最后

以上就是靓丽银耳汤最近收集整理的关于Java提取Doc,Docx中的文本信息Java提取Doc,Docx中的文本信息的全部内容,更多相关Java提取Doc,Docx中内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部