2016-04-15 23 views
1

だから私はdocx4jを使用しようとしています。私はシンプルなテンプレートを作ってそれを使って、プログラムで値を置き換えます。docx4j:docxテンプレートを使用し、MergeField変数の値を置き換えます

ここに私のdocxテンプレートがあります。私はそれがこのようになりますトグルフィールドコードをクリックし

My Name is «myName» 
I’m «myAge» years old. 
My address is «myAddress» 

My Name is {MERGEFIELD myName \* MERGEFORMAT} 
I’m {MERGEFIELD myAge \* MERGEFORMAT} years old. 
My address is {MERGEFIELD myAddress \* MERGEFORMAT} 

私はMERGEFIELDの使用は知らないが、私はそれは、インターネットでのポストが現在使用しているものだから、単にそれを使用しようとしました。

ここに私のコードです。

DEFコンフィグ= grailsApplication.config.template.invoiceSampleマップとして

DEFストリングtemplateFileName = "$ {grailsApplication.config.template.dir}/$ {config.doc.templateFileName}"

WordprocessingMLパッケージテンプレート= WordprocessingMLPackage.load(新しいファイル(templateFileName));

マップマップ=新しいHashMap();

map.put(新しいDataFieldName( "@ myName")、 "Jean");

map.put(新しいDataFieldName( "@ myAge")、 "30");

map.put(新しいDataFieldName( "@ myAddress")、 "Sampaloc");

org.docx4j.model.fields.merge.MailMerger.setMERGEFIELDInOutput(MailMerger.OutputField.KEEP_MERGEFIELD);

org.docx4j.model.fields.merge.MailMerger.performMerge(template、map、false);

template.save(新しいファイル( "C:/temp/OUT_SIMPLE.docx"));

ただし、出力ファイルの値は置き換えません。私のコードで何が間違っているのか教えてください。

答えて

0

この問題は修正するのが簡単だとわかりました。

基本的に、この行は出力に影響します。

MailMerger.setMERGEFIELDInOutput(MailMerger.OutputField.KEEP_MERGEFIELD);値を持つフィールドを置き換えていますが、それを明らかにするためにフィールドコードトグルをクリックする必要があります -

  • MailMerger.OutputField.KEEP_MERGEFIELD

は私の観察に基づいて、これらのオプションは、次の操作を行います。

  • MailMerger.OutputField。コードは消えてしまいますが、最も重要な値は
  • MailMerger.OutputField.AS_FORMTEXT_REGULARトグルフィールドコードをクリックしなくても置換されます - -を削除し、私は正直にそれが何をするか分からない、それだけのショー{FORMTEXT }その言葉に。
  • MailMerger.OutputField.DEFAULT - REMOVEDで同じことを行います。
  • 私が何か間違っていると思われる場合は、私の答えを更新してください。

    関連する問題