生活随笔
收集整理的這篇文章主要介紹了
POI获取WORD信息
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
最近由于工作需要,調(diào)研了一下關(guān)于poi獲取word字體信息方面的方法,在這里mark一下。
首先word格式分為doc和docx,分別利用HWPFDocument和XWPFDocument對文檔進(jìn)行解析,話不多說,直接貼代碼:
1 import java.io.FileInputStream;
2 import java.io.IOException;
3
4 import org.apache.poi.hwpf.HWPFDocument;
5 import org.apache.poi.hwpf.usermodel.CharacterRun;
6 import org.apache.poi.hwpf.usermodel.Paragraph;
7 import org.apache.poi.hwpf.usermodel.Range;
8 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
9
10 public class fontTest {
11 public static void main(String[] args)
throws IOException {
12 String filePath = "***.doc"
;
13 POIFSFileSystem fs =
new POIFSFileSystem(
new FileInputStream(filePath));
14 HWPFDocument document =
new HWPFDocument(fs);
15 Range head =
document.getHeaderStoryRange();
16 for(
int i = 0;i<head.numCharacterRuns();i++
){
17 System.out.println(head.getCharacterRun(i).text());
18 }
19 System.out.println("==============================================="
);
20 Range range =
document.getRange();
21 for (
int i = 0; i < range.numParagraphs(); i++
) {
22 Paragraph para = range.getParagraph(i);
// 獲取第i段
23 int count = 0
;
24 while (
true) {
25 CharacterRun run = para.getCharacterRun(count);
// 此characterrun并非一個字符,而是一類字符,例如“數(shù)據(jù)挖掘”,前兩個字為加粗,后兩個字不加粗,那么“數(shù)據(jù)” 和“挖掘”會存在兩個characterrun中
26 System.out.println("color ------" + run.getColor());
// 字體顏色
27 System.out.println("font name---" + run.getFontName());
// 字體類型
28 System.out.println("font size---" + run.getFontSize());
// 字體大小
29 System.out.println("text -------" + run.text());
// 文本信息
30 System.out.println("bold -------" + run.isBold());
// 是否加粗
31 System.out.println("italic -----" + run.isItalic());
// 是否斜體字
32 System.out.println("algnment ---" + para.getJustification());
//對齊方式,0為左對齊,1為居中,2為右對齊,3為左右對齊
33 count++
;
34 System.out.println("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
);
35 if (run.getEndOffset() == para.getEndOffset()) {
//到達(dá)段落末尾
36 break;
37 }
38 }
39 System.out.println("--------------分段--------------"
);
40 }
41 }
42 }
1 package baidu;
2
3 import java.io.FileInputStream;
4 import java.io.InputStream;
5 import java.util.List;
6
7 import org.apache.poi.xwpf.usermodel.XWPFDocument;
8 import org.apache.poi.xwpf.usermodel.XWPFHeader;
9 import org.apache.poi.xwpf.usermodel.XWPFParagraph;
10 import org.apache.poi.xwpf.usermodel.XWPFRun;
11
12 public class fontdocx {
13 public static void main(String[] args)
throws Exception {
14 String filePath = "***.docx"
;
15 InputStream istream =
new FileInputStream(filePath);
16 XWPFDocument docx =
new XWPFDocument(istream);
17 // 獲取頁眉內(nèi)容
18 List<XWPFHeader> list =
docx.getHeaderList();
19 for (XWPFHeader head : list) {
20 List<XWPFParagraph> paralist =
head.getParagraphs();
21 for (XWPFParagraph para : paralist) {
22 System.out.println(para.getText());
23 }
24 // System.out.println(head.getText());
25 }
26 List<XWPFParagraph> paraGraph =
docx.getParagraphs();
27 for (XWPFParagraph para : paraGraph) {
28 List<XWPFRun> run_array =
para.getRuns();
29 for (
int i = 0; i < run_array.size(); i++
) {
30 System.out.println("alignment --"
31 + para.getAlignment().toString());
// 對齊方式
32 System.out
33 .println("text -------" + run_array.get(i).getText(0));
// 文本內(nèi)容
34 System.out.println("font name --"
35 + run_array.get(i).getFontFamily());
// 字體類型
36 System.out
37 .println("color ------" + run_array.get(i).getColor());
// 字體顏色
38 System.out.println("font size --"
39 + run_array.get(i).getFontSize());
// 字體大小
40 }
41 }
42 }
43 }
對于抽取內(nèi)容的準(zhǔn)確度,未經(jīng)過格式轉(zhuǎn)換文本的準(zhǔn)確度還是可以接受的。
在這里介紹的抽取內(nèi)容比較少,歡迎大家補(bǔ)充!
轉(zhuǎn)載于:https://www.cnblogs.com/MaNog/p/3638106.html
總結(jié)
以上是生活随笔為你收集整理的POI获取WORD信息的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。