首页 > 代码库 > 使用word的xml模板生成.doc文件

使用word的xml模板生成.doc文件

一、编辑模板 替换地方以变量标记如“案件编号”可写成{caseNo}

  template.xml

二、准备数据 以HashMap封装数据,原理是替换模板中的变量

三、替换操作

  选择输出位置:writePath

  WordUtil.printWordbyXMLWithOutputPath(templateFile, writePath, filename, dataMap);

/**
     * 打印word文档(传入参数需要传入输出文件的保存路径的)
     * @param templateFile
     * @param writeFilePath
     * @param writeFileName
     * @param analysisData    要替换的数据,map的形式传递
     * @throws Exception
     */
    public static void printWordbyXMLWithOutputPath(String templateFile, String writeFilePath, 
            String writeFileName, Map<String, String> analysisData) throws Exception{
        writeFilePath = makePathFile(writeFilePath);
        String writeFile = "";
        if(writeFilePath.endsWith("\\") || writeFilePath.endsWith("/")){
            writeFile += writeFilePath + writeFileName;
        }else{
            writeFile = writeFilePath + FILE_SEPARATOR + writeFileName;
        }
        printWordByXML(templateFile, writeFile, analysisData);
    }
/**
     * 打印word文档(输出路径不需要单独指出,保存在writeFile中即可)
     * @param templateFile
     * @param writeFile
     * @param analysisData
     * @throws Exception
     */
    public  static void printWordByXML(String templateFile, 
            String writeFile, Map<String, String> analysisData) throws Exception{
        FileInputStream fis = null;
        InputStreamReader isr = null;
        BufferedReader in = null;
        FileOutputStream fos = null;
        OutputStreamWriter osw = null;
        BufferedWriter out = null;
        try {
            fis = new FileInputStream(templateFile);
            isr = new InputStreamReader(fis, "UTF-8");
            in = new BufferedReader(isr);
            fos = new FileOutputStream(writeFile);
            osw = new OutputStreamWriter(fos, "UTF-8");
            out = new BufferedWriter(osw);
            String s;
            while ((s = in.readLine()) != null) {
                for (String key : analysisData.keySet()) {
                    String value = analysisData.get(key);
                    if (value != null) {
                        s = s.replace(key, value);
                    } else {
                        s = s.replace(key, "");
                    }
                }
                out.write(s);
                out.newLine();
            }
            
        } catch (Exception e) {
            e.printStackTrace();
        } finally{
            if(out != null){
                out.close();
            }
            if(osw != null){
                osw.close();
            }
            if(fos != null){
                fos.close();
            }
            if(in != null){
                in.close();
            }
            if(isr != null){
                isr.close();
            }
            if(fis != null){
                fis.close();
            }
            
        //    DeleteFile(templateFile);
        }
        
    }

 

/**
     * 验证目录是否存在,如果不存在,则创建对应目录。
     * @param filePathName
     */
    public  static String  makePathFile(String filePathName){
        File pathFile = new File(filePathName);
        if(!pathFile.exists()){
            pathFile.mkdirs();
        }
        File childFile = new File(pathFile + "\\\\"
                + DateTools.dateToString( new Date(),"yyyyMM"));//xiexiangning
        if (!childFile.exists()) {
            childFile.mkdir();
        }
        return childFile + "\\\\";
    }