ここで 、「HWPF」(MS Word 2000 .doc) ファイルの Apache POI に CharacterRun.getStyleIndex()... メソッドがあることがわかります。今回の募集に応募...
しかし、XWPFのもの (MS Word 2003+ .docx) ファイルでは、XWPFRun オブジェクトの文字スタイルを識別する方法が見つかりません。
次のコードは、 内のすべての run[1] からすべてのスタイルを取得しXWPFDocument
、文字スタイルとして適用されている場合はそれらの XML を出力する必要があります。
import java.io.FileInputStream;
import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRPr;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STStyleType;
import java.util.List;
public class WordGetRunStyles {
public static void main(String[] args) throws Exception {
FileInputStream fis = new FileInputStream("This is a Test.docx");
XWPFDocument xdoc = new XWPFDocument(fis);
List<XWPFParagraph> paragraphs = xdoc.getParagraphs();
for (XWPFParagraph paragraph : paragraphs) {
List<XWPFRun> runs = paragraph.getRuns();
for (XWPFRun run : runs) {
CTRPr cTRPr = run.getCTR().getRPr();
if (cTRPr != null) {
if (cTRPr.getRStyle() != null) {
String styleID = cTRPr.getRStyle().getVal();
System.out.println("Style ID=====================================================");
System.out.println(styleID);
System.out.println("=============================================================");
XWPFStyle xStyle = xdoc.getStyles().getStyle(styleID);
if (xStyle.getType() == STStyleType.CHARACTER) {
System.out.println(xStyle.getCTStyle());
}
}
}
}
}
}
}
[1] コンテンツの多いドキュメントで試してはいけません ;-)。
@mike げっ歯類からのコメントに記載されているように、 https://poi.apache.org/faq.html#faq-N10025java.lang.NoClassDefFoundError: org/openxmlformats/schemas/*something*
に記載されているように、取得した場合は完全な ooxml-schemas-1.3.jar を使用する必要があります。
私にとって、このコードは使用しないため、これなしで実行されますPhonetic Guide Properties
( https://msdn.microsoft.com/en-us/library/office/documentformat.openxml.wordprocessing.rubyproperties.aspx )。Office2007を使用しています。