如何自动从Word表格中提取高亮(不同颜色)文本--Java实现
文章目录
- 问题情境
- 相关jar包
- Java实现程序
Email:1563178220@qq.com 内容可能有不到之处,欢迎交流。
未经本人允许禁止转载。
问题情境
在word中存在多个表格,每个表格会有一些使用不同颜色标注的高亮文本,那么如何利用编程语言自动的提出这些高亮文本呢?这便是本文的问题情境,针对此,我使用Java实现了这一功能。
针对上面,这个表格(只匹配表格中的红色、黄色、蓝色、绿色对应的文本),Java程序的输出结果为:
处理时,这里不考虑表格的表头。
相关jar包
使用maven可以配置相关jar包,具体如下:
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
同时,还需要下载poi-scratchpad-3.17.jar:
Java实现程序
package com.qian.word;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
public class WordRead {
public static void main(String[] args) throws IOException {
//设置要匹配的颜色--16进制颜色代码
String[] colors = { "FF0000", //红色
"FFFF00", //黄色
"0000FF", //蓝色
"00FF00" //绿色
};
InputStream in = new FileInputStream("data/wordtext.docx"); //docx文件
@SuppressWarnings("resource")
XWPFDocument xdoc = new XWPFDocument(in);
Iterator<XWPFTable> itTable = xdoc.getTablesIterator(); //获取word文件中的表格
XWPFTable table;
int tableIndex = 0; //表格编号
System.out.println("表格编号" + "\t" + "行" + "\t" + "列" + "\t" + "文本" + "\t" + "高亮颜色" + "\t");
while (itTable.hasNext()) { //循环word中的每个表格
tableIndex++;
table = itTable.next();
XWPFTableRow row;
List<XWPFTableCell> cells;
for (int i = 0; i < table.getNumberOfRows(); i++) {
if(i == 0) //这里设置是否包含表头
continue;
row = table.getRow(i); //获取word表格的每一行
cells = row.getTableCells(); //针对每一行的所有单元格
for (int j = 0; j < cells.size(); j++) {
XWPFTableCell cell = cells.get(j); //获取单个单元格
//获取单元格相同字体颜色+文字
XWPFParagraph paras = cell.getParagraphs().get(0); //获取包含段落的列表--只有一段
List<XWPFRun> runsLists = paras.getRuns();//获取段落中的列表
for(XWPFRun xL:runsLists){
String c = xL.getColor();
String text = xL.text();
if (c!=null&&Arrays.asList(colors).contains(c)) {
System.out.println(tableIndex + "\t" + i + "\t" + j + "\t" + text + "\t" + c + "\t");
}
}
}
}
}
}
}
原文作者:HFUT_qianyang
原文地址: https://blog.csdn.net/qy20115549/article/details/108907828
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/qy20115549/article/details/108907828
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
相关文章