如何使用POI读取粗体和斜体格式的word文档



我正在使用Apache POI。

我能够通过使用"org.apache.poi.hwpf.extractor"从文档文件中读取文本。WordExtractor "

甚至通过使用"org.apache.poi.hwpf.usermodel.Table"来获取表

但是请告诉我,我怎样才能获取文本的粗体/斜体格式。

WordExtractor只返回文本,不返回其他内容。

获取word文档的文本+格式的最简单方法是切换到使用Apache Tika。Apache Tika构建在Apache POI(以及其他)之上,并提供纯文本提取和富文本提取(带格式的XHTML)。

或者,如果您想自己编写代码,我建议您查看Tika的WordExtractor中的代码,该代码演示了如何使用Apache POI获取文本运行的格式化信息。

不使用WordExtractor,您可以使用Range:

读取
...
HWPFDocument doc = new HWPFDocument(fis);
Range r = doc.getRange();
...

Range是该模型的中心类。当您获得范围时,您可以更多地使用文本的特性,例如,遍历所有CharacterRuns,并检查它是否为Italic(. isitalic())或更改为Italic: (. seitalic (true))。

for(int i = 0; i<r.numCharacterRuns(); i++)
        {
            CharacterRun cr = r.getCharacterRun(i);
            cr.setItalic(true);
            ...
        }
...
File fon = new File(yourFilePathOut);
FileOutputStream fos = new FileOutputStream(fon);
doc.write(fos); 
...

如果您坚持使用HWPF,它可以工作。在两者之间,用段落的概念来框架和工作是比较方便的。

最新更新