Freemarkerでwordドキュメントをエクスポートする
3182 ワード
1、wordでエクスポートするテンプレートを書いて、動的に修正する必要がある内容を***に置き換えます.wordにピクチャを追加する必要がある場合は、ピクチャ占有を追加してxml形式に保存し、接尾辞名を.ftlに変更します.
注意:(1)テンプレートを作成するときは、エクスポートされたwordドキュメントがWord 2003で開かないという問題を回避するために、Microsoft Office Word 2003を使用します.
(2)wordフォーマットの問題にも注意する.ワードエクスポートに成功した後にフォーマットの不調和などの問題を発見したら、新しく来たことしかありません.
(3)ピクチャ占有を加える場合は、できるだけ50 K未満のピクチャを選択し、ピクチャの大きさと位置を調整してください.小さな画像を選択したのは、xmlファイルが大きすぎて開くのが遅くなったり、詰まったりするのを避けるためです.
2、Firstobject free XML editorでftlファイルを開き、Toolsの下のIndent【またはショートカットキーF 8を押す】を選択してファイル内容をフォーマットします.左はftlのドキュメント構造、右はドキュメント内容です.
注:フォーマット後のコードをより明確にするには、tool->preferencesでIndentをTabsに設定する必要があります.
3、ftlで内容を動的に変更する必要がある箇所をfreemarkerの標識に変更します.実はMapのkey、例えば${year}です.
4、ピクチャ占有が加わった場所では、base 64符号化されたコードが次のように表示されます.
${grade.photo}
base 64のコードをたとえば${image}に置き換えると、次のようになります.
${grade.photo}
注意:「>${grade.photo}<」このカッコの間には、スペース、tab、改行などの他の記号は追加できません.
ループが必要な場合は、次の操作を行います.
<#list grade.list as student>...,
具体的にはDemoをご覧ください.
5、表示が入れ替わったら、テンプレートは終わります.
特に注意:wordでftlテンプレートファイルを開かないでください.そうしないとxmlの内容が変化し、前の仕事が無駄になります.
処理コードは次のとおりです.
呼び出されたコード:
附:Firstobject free XML editorダウンロードアドレス:http://www.firstobject.com/dn_editor.htm
freemarker 公式サイト:http://freemarker.org/
注意:(1)テンプレートを作成するときは、エクスポートされたwordドキュメントがWord 2003で開かないという問題を回避するために、Microsoft Office Word 2003を使用します.
(2)wordフォーマットの問題にも注意する.ワードエクスポートに成功した後にフォーマットの不調和などの問題を発見したら、新しく来たことしかありません.
(3)ピクチャ占有を加える場合は、できるだけ50 K未満のピクチャを選択し、ピクチャの大きさと位置を調整してください.小さな画像を選択したのは、xmlファイルが大きすぎて開くのが遅くなったり、詰まったりするのを避けるためです.
2、Firstobject free XML editorでftlファイルを開き、Toolsの下のIndent【またはショートカットキーF 8を押す】を選択してファイル内容をフォーマットします.左はftlのドキュメント構造、右はドキュメント内容です.
注:フォーマット後のコードをより明確にするには、tool->preferencesでIndentをTabsに設定する必要があります.
3、ftlで内容を動的に変更する必要がある箇所をfreemarkerの標識に変更します.実はMap
4、ピクチャ占有が加わった場所では、base 64符号化されたコードが次のように表示されます.
base 64のコードをたとえば${image}に置き換えると、次のようになります.
注意:「>${grade.photo}<」このカッコの間には、スペース、tab、改行などの他の記号は追加できません.
ループが必要な場合は、次の操作を行います.
<#list grade.list as student>...,
具体的にはDemoをご覧ください.
5、表示が入れ替わったら、テンプレートは終わります.
特に注意:wordでftlテンプレートファイルを開かないでください.そうしないとxmlの内容が変化し、前の仕事が無駄になります.
処理コードは次のとおりです.
/**
* @ dataMap Key
*/
public void create(Map<String, Object> dataMap) throws Exception {
Configuration configuration = new Configuration();
configuration.setDefaultEncoding("utf-8");
// com.canyou.template , classpath
configuration.setClassForTemplateLoading(this.getClass(),
"/com/canyou/template");
Template t = configuration.getTemplate("test.ftl");//
File outFile = new File(docPath);
if (!outFile.exists()) {
outFile.createNewFile();
}
Writer out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(outFile), "utf-8"));
t.process(dataMap, out);
}
呼び出されたコード:
public static void main(String[] args) {
Map<String, Object> dataMap = new HashMap<String, Object>();//
Grade grade = new Grade();
grade.setSchool(" ");
grade.setMajor(" ");
grade.setYear(2011);
grade.setAdviser(" ");
grade.setNo("0102");
grade.setPhoto(getFileStream("D:\\ \\http_imgload.jpg"));
List<Student> list = new ArrayList<Student>();
for (int i = 0; i < 100; i++) {
Student stu = new Student();
stu.setNo("0102" + i);
stu.setName("test" + i);
stu.setSex(i % 2 == 1 ? " " : " ");
stu.setAge(20 + i % 5);
stu.setAddress(" 1 ");
list.add(stu);
}
附:Firstobject free XML editorダウンロードアドレス:http://www.firstobject.com/dn_editor.htm
freemarker 公式サイト:http://freemarker.org/