public static void parseVo(Map<String, TableVO> voMap) {
        
        // Freemarker configuration object
        Configuration cfg = new Configuration();
        
        // Build the data-model
        Map<String, Object> ftlVo = new HashMap<String, Object>();
        
        try {
            // Load template from source folder
            Template template = cfg.getTemplate(SQL_TABLE_FTL_PATH);
            ftlVo.put("tableData", voMap);

            // Console output
            Writer out = new OutputStreamWriter(System.out);
            template.process(ftlVo, out);
            out.flush();

            // File output
            Writer file = new FileWriter(new File(SQL_TABLE_WORD_TEMPLATE_PATH + "/word/document.xml"));
            template.process(ftlVo, file);
            file.flush();
            file.close();

        } catch (IOException e) {
            log.error("e:" + e);
        } catch (TemplateException e) {
            log.error("e:" + e);
        }

        // file to zip
        try {
            
            // zip output file:副檔名可直接命名為docx
            FileOutputStream f = new FileOutputStream(WORD_ZIP_PATH);

            // CheckedOutputStream ch = new CheckedOutputStream(f, new CRC32());
            // Adler32
            CheckedOutputStream ch = new CheckedOutputStream(f, new Adler32());
            ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(
                    ch));

            // zip input folder
            File file = new File(SQL_TABLE_WORD_TEMPLATE_PATH);
            ZipUtils.fileZip(out, file, "sql_table");
            out.close();
            
        } catch (Exception e) {
            log.error("e:" + e);
        }
    }