程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 如何能讓Java生成復雜Word文檔(3)

如何能讓Java生成復雜Word文檔(3)

編輯:關於JAVA

主要程序代碼:

  1. package com.havenliu.document;
  2. import Java.io.BufferedWriter;
  3. import Java.io.File;
  4. import Java.io.FileNotFoundException;
  5. import Java.io.FileOutputStream;
  6. import Java.io.IOException;
  7. import Java.io.OutputStreamWriter;
  8. import Java.io.Writer;
  9. import Java.util.ArrayList;
  10. import Java.util.HashMap;
  11. import Java.util.List;
  12. import Java.util.Map;
  13. import freemarker.template.Configuration;
  14. import freemarker.template.Template;
  15. import freemarker.template.TemplateException;
  16. public class DocumentHandler {
  17. private Configuration configuration = null;
  18. public DocumentHandler() {
  19. configuration = new Configuration();
  20. configuration.setDefaultEncoding("utf-8");
  21. }
  22. public void createDoc() {
  23. //要填入模本的數據文件
  24. Map dataMap=new HashMap();
  25. getData(dataMap);
  26. //設置模本裝置方法和路徑,FreeMarker支持多種模板裝載方法。可以重servlet,classpath,數據庫裝載,
  27. //這裡我們的模板是放在com.havenliu.document.template包下面
  28. configuration.setClassForTemplateLoading(this.getClass(), "/com/havenliu/document/template");
  29. Template t=null;
  30. try {
  31. //test.ftl為要裝載的模板
  32. t = configuration.getTemplate("test.ftl");
  33. } catch (IOException e) {
  34. e.printStackTrace();
  35. }
  36. //輸出文檔路徑及名稱
  37. File outFile = new File("D:/temp/outFile.doc");
  38. Writer out = null;
  39. try {
  40. out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile)));
  41. } catch (FileNotFoundException e1) {
  42. e1.printStackTrace();
  43. }
  44. try {
  45. t.process(dataMap, out);
  46. } catch (TemplateException e) {
  47. e.printStackTrace();
  48. } catch (IOException e) {
  49. e.printStackTrace();
  50. }
  51. }
  52. /**
  53. * 注意dataMap裡存放的數據Key值要與模板中的參數相對應
  54. * @param dataMap
  55. */
  56. private void getData(Map dataMap)
  57. {
  58. dataMap.put("author", "張三");
  59. dataMap.put("remark", "這是測試備注信息");
  60. List
  61. _table1=new ArrayList();
  62. Table1 t1=new Table1();
  63. t1.setDate("2010-10-1");
  64. t1.setText("制定10月開發計劃內容。");
  65. _table1.add(t1);
  66. Table1 t2=new Table1();
  67. t2.setDate("2010-10-2");
  68. t2.setText("開會討論開發計劃");
  69. _table1.add(t2);
  70. dataMap.put("table1", _table1);
  71. List
  72. _table2=new ArrayList();
  73. for(int i=0;i<5;i++)
  74. {
  75. Table2 _t2=new Table2();
  76. _t2.setDetail("測試開發計劃"+i);
  77. _t2.setPerson("張三——"+i);
  78. _t2.setBegindate("2010-10-1");
  79. _t2.setFinishdate("2010-10-31");
  80. _t2.setRemark("備注信息");
  81. _table2.add(_t2);
  82. }
  83. dataMap.put("table2", _table2);
  84. }
  85. }
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved