2016-12-23 150 views
0

私はdocxファイルのすべての内容を読む必要があるプロジェクトがありますが、それを取得する方法はわかりません。私が得ることのできるものはすべて段落のリストです。私はここでも をテキストボックス内のデータを取得したい私のコードです:docx4jでdocxファイルのテキストボックスのデータを取得する方法

List<Object> texts = getAllElementFromObject(document.getMainDocumentPart(), P.class); 

私は方法getAllElementFromObject(document.getMainDocumentPart(), CTTextbox.class);

を使用しようとしましたが、まだカントは、テキストボックスのデータを取得します。

私の方法getAllElementFromObject()

public static List<Object> getAllElementFromObject(Object obj, Class<?> toSearch) { 
    List<Object> result = new ArrayList<Object>(); 
    if (obj instanceof JAXBElement) obj = ((JAXBElement<?>) obj).getValue(); 

    if (obj.getClass().equals(toSearch)) 
     result.add(obj); 
    else if (obj instanceof ContentAccessor) { 
     List<?> children = ((ContentAccessor) obj).getContent(); 
     for (Object child : children) { 
      result.addAll(getAllElementFromObject(child, toSearch)); 
     } 
    } 
    return result; 
} 

答えて

0

テキストボックスWordで作成するようなものになります。ここでは

<w:p > 
     <w:r > 
      <w:pict> 
       <v:shapetype o:spt="202.0" path="m,l,21600r21600,l21600,xe" coordsize="21600,21600" id="_x0000_t202"> 
        <v:stroke joinstyle="miter"/> 
        <v:path gradientshapeok="t" o:connecttype="rect"/> 
       </v:shapetype> 
       <v:shape o:gfxdata="UEsDB..8EAABkcnMvZG93bnJldzAAAAhwUAAAAA" type="#_x0000_t202" style="position:absolute;margin-left:0;margin-top:0;width:186.95pt;height:110.55pt;z-index:251659264;visibility:visible;mso-wrap-style:square;mso-width-percent:400;mso-height-percent:200;mso-wrap-distance-left:9pt;mso-wrap-distance-top:0;mso-wrap-distance-right:9pt;mso-wrap-distance-bottom:0;mso-position-horizontal:center;mso-position-horizontal-relative:text;mso-position-vertical:absolute;mso-position-vertical-relative:text;mso-width-percent:400;mso-height-percent:200;mso-width-relative:margin;mso-height-relative:margin;v-text-anchor:top" id="Text Box 2" o:spid="_x0000_s1026"> 
        <v:textbox style="mso-fit-shape-to-text:t"> 
         <w:txbxContent> 
<w:p > 
    <w:r> 
     <w:t>foo</w:t> 
    </w:r> 
</w:p> 
          </w:txbxContent> 
         </v:textbox> 
        </v:shape> 
       </w:pict> 
      </w:r> 
     </w:p> 

を関連するオブジェクトは、次のとおりです。

  • org.docx4j.vml。 CTTextbox
  • org.docx4j.wml.CTTxbxContentコンテンツコントロールを含む)

PictはContentAccessorを実装していないため、コードは機能しません。

代わりに試してみてくださいhttps://github.com/plutext/docx4j/blob/master/src/main/java/org/docx4j/finders/ClassFinder.java

関連する問題