一,首先制作模板
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中相應的鍵值)