1、word模板文件處理,如下圖所示在word 文檔中填值的地方寫入占位變量
2、將word文檔另存為xml文件、編輯如下圖,找到填寫的占位,修改為${bcrxm}格式
3、將文件后綴名改為.ftl文件
4、java處理過程 、 引入frameMark jar 包
5、java代碼
一、將需要填充的數據封裝到map中、與模板中的占位對應、為什么用map 我也不知道。
二、創建configuration對象
三、設置編碼 utf-8
四、獲取模板 configuration.setDirectoryForTemplateLoading() 方法、configuration.getTemplate()方法
五、將模板和數據模型合並生成文件 template.process(map, out); //map為封裝的數據、out為輸出流對象
6、完整代碼、configuration.setClassForTemplateLoading 方法有不同的使用方式、可以根據自己的需要選擇、具體使用方法、問度娘。
public static String createWord1(Map dataMap,String templateName,String filePath,String fileName,HttpServletRequest request,HttpServletResponse response){ String fileOnlyName=null; try { //創建配置實例 Configuration configuration = new Configuration(); //設置編碼 configuration.setDefaultEncoding("UTF-8"); //ftl模板文件統一放至 template 包下面 configuration.setClassForTemplateLoading(Util.class,"/template/"); //獲取模板 Template template = configuration.getTemplate(templateName,"UTF-8"); //重命名 fileOnlyName = rename(fileName); //定義路徑 統一放到 webappo/hgjc/uploadRoot目錄下 String servicePath = request.getSession().getServletContext().getRealPath(File.separator); String basePath = ReadConfig.getConfigValue("uploadRoot")+File.separator+ReadConfig.getConfigValue(filePath)+File.separator+fileOnlyName; //輸出文件 File outFile = new File(servicePath+basePath); //如果輸出目標文件夾不存在,則創建 if (!outFile.getParentFile().exists() ){ outFile.getParentFile().mkdirs(); } //將模板和數據模型合並生成文件 Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile),"UTF-8")); //生成文件 template.process(dataMap, out); //關閉流 out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(); } return fileOnlyName; }