2013-02-23 36 views
0

我使用WordprocessingMLPackage.createPackage()方法創建了一個新的Document文件。 現在我試圖操縱默認樣式(「標題1」,「正常」等)的內容。 當我試圖打印出樣式屬性的值時,它返回NullPointerException。我很確定樣式在那裏,因爲名稱可以打印出來。但是當我嘗試訪問它的段落屬性時,它是空的。DOCX4J:空指針異常

所以現在我想知道如果我沒有正確訪問內容。

private static void createStyleFile() throws InvalidFormatException 
    { 
     WordprocessingMLPackage doc = WordprocessingMLPackage.createPackage(); 
     List<Style> styleList = doc.getMainDocumentPart().getStyleDefinitionsPart().getJaxbElement().getStyle(); 

     for(int x = 0; x < styleList.size(); x++) 
     { 
      Style curStyle = styleList.get(x); 
      //C.out(curStyle.getStyleId()); 
      C.out(curStyle.getName().getVal()); 
      curStyle.getPPr().getInd().getFirstLine().intValue(); 
     } 
    } 

回答

0

樣式可以是段落,字符,表格或列表樣式。

字體樣式不會有PPr組件,所以您必須在樣式類型上進行分支,或者測試getPPr是否返回null。

如果PPr不爲空,getInd()可能返回null,所以您還需要檢查null。

我建議你保存你的docx,解壓縮它,並查看styles.xml以獲得更好的構思。