JAVA 使用FREEMARKER製作EXCEL

背景:最近有一個需求要製作一個樣式十分豐富的EXCEL,使用POI技術無法很好的滿足需求,纔開始使用了FREEMARKER製作,它不僅可以做EXCEL也可以做WORD。

需要的JAR:點我下載

下面先簡單說下思路:

1.創建freemarker模版

2.代碼中調用freemarker模版

3.爲模版設置值


詳解:

一.製作freemarker模版:


1.使用EXCEL製作如上圖所示的模版,可以設置好模版的樣式(顏色等),在需要設置值的地方使用${} 符號填充,freemarker會根據${}裏面的變量找到這個單元格,然後用新的值將其替換。

2.將EXCEL另存爲2003版本的xml格式,會彈出警告,選擇'是'。

3.打開xml文件


找到剛剛寫的${talkDate},這邊要確定一下它是否還是${talkDate} 這個格式,因爲有時候這個變量會被excel格式化掉。

4.將xml文件改爲freemarker要求的ftl文件,只要將xml後綴名改爲ftl就OK了。

5.使用java代碼操作:

package com.nd.app;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;

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

public class TestFreemakre {
	private static Configuration configuration = null;
	private static Template t = null;

	static {
		configuration = new Configuration();
		configuration.setDefaultEncoding("utf-8");

		try {
			// 設置模版存放地址
			configuration.setDirectoryForTemplateLoading(new File("/Users/JJC/Downloads/"));
			configuration.setDefaultEncoding("utf-8");
			// 讀取模版
			t = configuration.getTemplate("project_talk_template.ftl");
		} catch (IOException e) {
			e.printStackTrace();
			throw new RuntimeException(e);
		} finally {
		}
	}

	public static void main(String[] args) throws Exception {
		try {
			Map<String, Object> wr = new HashMap<String, Object>();
			wr.put("talkDate", "111111111");
			wr.put("talkWay", "111111111");

			File outFile = new File("/Users/JJC/Downloads/111111.xls");
			FileOutputStream fos = new FileOutputStream(outFile);
			OutputStreamWriter oWriter = new OutputStreamWriter(fos, "UTF-8");
			Writer out = new BufferedWriter(oWriter); // 這邊使用 new
														// FileWriter就不行,不知道爲啥
			t.process(wr, out);
			out.close();
			fos.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}



注意:要替換的值不能是null,可以是空字符串。在xml裏面可以使用if ,也能使用list循環。格式如:

<#if sheetType == 2> 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章