velocityを使用してテンプレート化されたwordファイルを生成する

1182 ワード

需要
ユーザーはフォームの内容を記入した後、wordドキュメントをダウンロードし、印刷、スタンプをたたく必要があります.wordを選択するメリットは、印刷前に修正できること(pdfでは修正できず、シーンによって選択が異なる)、excelよりレイアウトが柔軟であることです.
実現構想.
wordはxmlとして保存でき、テンプレートエンジン技術を使用すると置換が非常に容易に完了し、本プロジェクトではvelocityが使用されているためfreemarkerは選択されていない.
遭遇した穴
私はword 2007を使って、テンプレートを作成してxmlとして保存した結果、生成したファイルの中の一部の中国語に文字化けしが表示されました.いろいろな試みが実を結ばなかった.最終的にword 2003 xmlドキュメントを選択して問題を解決するように保存します.興味のある学生は研究を続けてください.
テンプレート作成テクニック
xmlとして保存するのはいい考えだが、実際に生成されるxml構造は複雑で、一般的にはよく知られていない.
  • wordでvelocityの変数を記述します.ただし、保存後、テキストエディタで変数がwordで多段
  • に分割されているかどうかを確認します.
  • xmlフォーマットツールを使用してフォーマット
  • を美化
  • ループ構造のforeachは、テキストエディタを使用して作成する必要があります.迅速な位置決めのためにw:tr
  • を検索できます.
  • 編集済みテンプレートをWEB-INFtemplates下
  • に保存
    JAva呼び出し
    String path = WordHelper.createWord("bond.doc.vm","bond.doc",bondVO);
    

    テンプレート名、wordファイル名、データpojoはダウンロード用の相対パスを返し、ダウンロード機能はウェブページが閉じた後に役に立たないため、tempディレクトリの下に存在し、タイミング削除が便利である.
    注意事項を発表する
    downloadディレクトリはソフト接続が必要です
    構想を改善する.
    実践の過程でこのxmlは維持しにくいので、最初は我慢して、デフォルトの内容を修正するように要求すると馬鹿になります.そこで新しい考え方はhtmlのテンプレートを書いてvelocityで変数を置き換え、POIを使ってwordを生成することです.これにより、従来の技術に対する調整が小さくなり、後続のテンプレートのメンテナンスも簡単になる.