Java根據模板生成Word文檔


一,首先制作模板

  1.先做一個Word文檔,

  2.打開Word,然后另存為*.xml文件

  3.最后修改*.xml文件的后綴名為*.ftl

 

二,打開項目編輯器Idea,在pom文件中引入相關架包依賴(我這里用的是maven)

  

  <dependency>
   <groupId>org.apache.poi</groupId>
   <artifactId>poi-scratchpad</artifactId>
  <version>3.8</version>
  </dependency>
  <dependency>
   <groupId>org.apache.poi</groupId>
   <artifactId>poi-ooxml</artifactId>
   <version>3.8</version>
  </dependency>


//下面是gradle的引入格式,可根據自己需要使用相應方式
(compile group: 'org.apache.poi', name: 'poi', version: '3.14')


三,以上准備完畢開始編寫代碼

 

 以下是接口中應寫內容=> 

  Map<String, Object> dataMap = new HashMap<String, Object>();
  Configuration configuration = new Configuration(Configuration.VERSION_2_3_22);
  configuration.setDefaultEncoding("utf-8");

  //得到需要傳入Word文件中的相關內容數據
  //user為數據對象,getUser()為查詢數據的方法,在用的時候換成自己的對應方法即可
  User user=useruserService.useruserService.getUser();

  if(user.getName()!=null && !user.getName().equals("")){
  dataMap.put("name",user.getName());
  }
  if(user.getSex()!=null && !user.getSex().equals("")){
   dataMap.put("sex",user.getSex());
  }
  if(user.getAge()!=null && !user.getAge().equals("")){
   dataMap.put("age",user.getAge());
  }
  //還有更多屬性...大家可根據自己的實際需求進行添加

  //得到模板位置(因為實際環境中模板可能較多,所以一般都是有一個專屬的文件夾用來存放模板(template))
  configuration.setClassForTemplateLoading(this.getClass(), "/template");
  Template t = null;
  File outFile = null;

  //創建一個文件路徑,用來存放生成的相關文件
  File myFilePath=new File(fileUploadPath+"/projects/"+projectsDto.getId()+"/file/");
  if(!myFilePath.exists()){
   myFilePath.mkdir();
  }

  //創建新文件
  String path="../../"+"新文件.doc";
  t=configuration.getTemplate("模板文件.ftl","UTF-8");
  outFile=new File("../../../"+"新文件.doc");

  Writer out = null;
  out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "UTF-8"));
  // 生成文件
  t.process(dataMap, out);
  // 關閉流
  out.flush();
  out.close();
  //path是返回給前端找到這個文件的一個路徑
  return path;




注:在制作模板的時候最好在需要傳入值得地方做好標記,這樣在ftl中找對應位置的時候會方便許多
  ftl文件中對應字段屬性位置的格式(name對應代碼中dataMap中相應的鍵值)






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM