2017-07-03 13 views
0

私はワードドキュメントを持っています(docxとxmlをベースにしています)、私はテーブルを見つけてそれをプログラムで取り込みたいと思っています。私はApache POI、XWPF APIを使用しています。Apache POIでは、IDでXWPF要素にアクセスする方法はありますか?

IDでXWPF要素にアクセスする方法はありますか?

XWPF要素間の一意性を作成し、javaを使用して変更するにはどうすればよいですか?

おかげ

+1

あなたは「ID」とは何ですか? WordでこれらのIDをどのように設定しますか? 'Word'テーブルは[Table Properties - Alt Text]に' Title'を持つことができます(https://support.office.com/en-us/article/Set-または-change-table-properties-3237de89-b287-4379 -8e0c-86d94873b2e0#__toc5)。これは意味ですか? –

+0

こんにちはアクセル、はいAFAIKのIDはありません。しかし、私は他の人々がどのようにそれを使用しているのか理解したいと思います。 Altのテキストは実際にはテーブルのための良い解決策です。しかし、私はXWPFインターフェイスを使用して他の人々がどのように興味を持っています。 – ozkolonur

+0

'Word'文書の要素の一般的な順序付け基準は、上から下への出現を除いてありません。ですから、一般的にはすべての 'IBodyElement'を繰り返し処理し、' BodyElementType'が何であるのかを判断し、その要素で何をする必要があるのか​​を判断します。特別な場合には、要件は明確でなければならない。たとえば、プレースホルダーのテキストを置き換えたり、フォームフィールドを塗りつぶしたり、見出し/ブックマーク/キャプション/代替テキスト/ ...を検索して要素を決定することができます。しかし、このためには、Word文書の作成者にとって、文書にそのようなことを記述しなければならないため、要件も明確にする必要があります。 –

答えて

1

私は何を実装したこと置き換える見つける機能(from here)です。

私のテンプレートのdocxファイルで、私は "id like texts"、__heading1__、__subjectname__を使用しています。テーブルの場合、axel-richtersのソリューションが適しているかもしれません。

private void findReplace(String a, String b, CustomXWPFDocument document){ 
    for (XWPFParagraph p : document.getParagraphs()) { 
     List<XWPFRun> runs = p.getRuns(); 
     if (runs != null) { 
      for (XWPFRun r : runs) { 
       String text = r.getText(0); 
       if (text != null && text.contains(a)) { 
        text = text.replace(a, b); 
        r.setText(text, 0); 
       } 
      } 
     } 
    } 
} 
関連する問題