java根據word模板導出word文件


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;
        }

 


免責聲明!

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



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