一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

freeMarker模板引擎將表格中的數(shù)據(jù)導(dǎo)出成Excel

 心情谷 2014-03-19
  • 導(dǎo)入freemark包:
  • 1.打開菜單項(xiàng) Help -> install new software... .
  • 2.點(diǎn)擊 Add Update Site... , 輸入 " FreeMarker " 作為名字以及 "- http://download./jbosstools/updates/stable/galileo/ 作為更新的地址
  • 3.選中復(fù)選框 "FreeMarker"
  • 4.點(diǎn)擊下一步或完成按鈕根據(jù)提示完成插件的安裝
  • 5.安裝完畢后該插件自動(dòng)關(guān)聯(lián)*.ftl文件,你也可以在對(duì)話框中進(jìn)行自行設(shè)置。
  • 第一部分:
    package com.freemark;
    //Bean對(duì)象
    public class ShowBean {

    private String name;  
        private String courseCode;  
        private String categoryName = null;
        
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public String getCourseCode() {
    return courseCode;
    }
    public void setCourseCode(String courseCode) {
    this.courseCode = courseCode;
    }
    public String getCategoryName() {
    return categoryName;
    }
    public void setCategoryName(String categoryName) {
    this.categoryName = categoryName;
    }
        
    }


    第二部分:
    package com.freemark;
    //
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.OutputStreamWriter;
    import java.io.Writer;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Locale;
    import java.util.Map;

    import freemarker.template.Configuration;
    import freemarker.template.Template;

    public class FreeMarkerTest {
      
        private Configuration config;
        public Configuration getConfig(){  
            return config;
        }
        
        /** 
         * 注意:setEncoding這個(gè)方法一定要設(shè)置國家及其編碼,不然在flt中的中文在生成html后會(huì)變成亂碼 
         * @param filePath 文件路徑 
         * @throws Exception 
  •     *初始化,獲得模板文件路徑
         */  
        public void init(String filePath) throws Exception {  
            config = new Configuration();  
            config.setDirectoryForTemplateLoading(new File(filePath));  
            config.setEncoding(Locale.CHINA, "utf-8");  
        }
          
        /** 
         * 通過flt文件用html文件展示數(shù)據(jù) 
         * @param templateFile flt模板文件 
         * @param list 要生成html的集合數(shù)據(jù) 
         * @param charset flt生成數(shù)據(jù)的編碼格式 
         * @param htmlFile 通過flt生成html的文件 
         * @throws Exception 
  •   *將模板和數(shù)據(jù)模型合并,最終輸出html文件
         */  
        public void showCourse(String templateFile, List<ShowBean> list, String charset, String htmlFile) throws Exception {  
         String filePath = FreeMarkerTest.class.getResource("/").getPath().split("bin")[0]+"template/";
         init(filePath);
            Map<String, Object> root = new HashMap<String, Object>();  
            Template temp = getConfig().getTemplate(templateFile);  
            root.put("courseList", list);
            String htmlResource = filePath+htmlFile;
            Writer out=new OutputStreamWriter(new FileOutputStream(htmlResource), charset);  
            temp.process(root, out);  
        }
        
        public static void main(String[] args) throws Exception {
         //創(chuàng)建數(shù)據(jù)模型
  • FreeMarkerTest test = new FreeMarkerTest();
         ShowBean bean1 = new ShowBean();
            bean1.setCategoryName("哈哈哈哈");  
            bean1.setCourseCode("呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀");  
            bean1.setName("name1");  
              
            ShowBean bean2 = new ShowBean();  
            bean2.setCategoryName("嘻嘻嘻嘻嘻嘻嘻嘻");  
            bean2.setCourseCode("和哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈");  
            bean2.setName("name2");
            
            ShowBean bean3 = new ShowBean();  
            bean3.setCategoryName("嗯嗯嗯嗯嗯嗯嗯");  
            bean3.setCourseCode("嘿嘿和而后哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈");  
            bean3.setName("name3");  
            
            List<ShowBean> list = new ArrayList<ShowBean>();  
            list.add(bean1);  
            list.add(bean2);  
            list.add(bean3);
            
            test.showCourse("course.ftl", list, "utf-8", "course.html");  
        }

    }

    第三部分
  • //然后寫ftl模板 我把ftl存放在/WEB-INF/templates/ 目錄下 新建index.ftl 寫要迭代的數(shù)據(jù)
  • //模板
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www./TR/xhtml1/DTD/xhtml1-transitional.dtd">  
    <html xmlns="http://www./1999/xhtml">  
    <head>  
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
    </head>  
    <body>  
    <table border="0">  
    <#list courseList as row>  
    <tr>  
    <td>  
    <#if row.categoryName?exists>  
    [<font color="red">${row.categoryName}</font>]  
    </#if>  
    <a >${row.name}</a>  
    </td>  
    </tr>  
    </#list>  
    </table>    
    <div align="right">  
    ${showMore?default("更多...")}          
    </div>
    </body>
    </html>


    備注:
    在項(xiàng)目中加入template文件夾
    template中存放course.ftl模板

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    99日韩在线视频精品免费| 高清国产日韩欧美熟女| 在线日韩中文字幕一区| 国产在线一区二区三区不卡| 亚洲国产精品av在线观看| 98精品永久免费视频| 丰满的人妻一区二区三区| 少妇肥臀一区二区三区| 2019年国产最新视频| 日韩精品福利在线观看| 欧美成人免费夜夜黄啪啪| 亚洲一区二区精品免费| 国产亚洲中文日韩欧美综合网 | 毛片在线观看免费日韩| 国产高清在线不卡一区| 欧美日韩国产精品黄片| 在线观看欧美视频一区| 欧美加勒比一区二区三区| 国产精品国产亚洲区久久| 99久免费精品视频在线观| 精品丝袜一区二区三区性色| 国产性色精品福利在线观看| 亚洲精品福利视频在线观看| 91人妻久久精品一区二区三区| 亚洲国产精品久久网午夜| 日韩三极片在线免费播放| 欧美日韩精品久久亚洲区熟妇人| 亚洲视频一区二区久久久| 国产成人av在线免播放观看av| 亚洲中文字幕视频一区二区| 国产又粗又硬又大又爽的视频| 91久久精品中文内射| 国产偷拍精品在线视频| 日韩欧美二区中文字幕| 国产精品熟女在线视频| 日本av在线不卡一区| 国产精品十八禁亚洲黄污免费观看| 91麻豆视频国产一区二区| 激情视频在线视频在线视频| 91在线爽的少妇嗷嗷叫| 亚洲熟妇熟女久久精品 |