maven配置
<!-- https://mvnrepository.com/artifact/org.freemarker/freemarker -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.23</version>
</dependency>
JavaBean
@Getter
@Setter
public class MapToExcelBean extends AbstractBaseDTO {
/**
* mapName
*/
private String mapName;
/**
* mapTag
*/
private String mapTag;
}
@Getter
@Setter
使用了lombok,这里不多解释了。
maven配置:
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.10</version>
<scope>provided</scope>
</dependency>
freemarker的FTL
<#list mtbs as mtb>
<tr><td>${mtb.mapName}</td><td>${mtb.mapTag}</td></tr>
</#list>
测试类
public static void main(String[] args) throws IOException, TemplateException {
/* ------------------------------------------------------------------------ */
/* You should do this ONLY ONCE in the whole application life-cycle: */
/* Create and adjust the configuration singleton */
Configuration cfg = new Configuration(Configuration.VERSION_2_3_23);
String file = "E:\\Files\\ftl";
cfg.setDirectoryForTemplateLoading(new File(file));
cfg.setDefaultEncoding("UTF-8");
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
/* ------------------------------------------------------------------------ */
/* You usually do these for MULTIPLE TIMES in the application life-cycle: */
/* Create a data-model */
Map root = new HashMap();
List mtbs = new ArrayList<MapToExcelBean>();
for (int i = 0; i < 4; i++) {
MapToExcelBean mtb = new MapToExcelBean();
mtb.setMapName("mapName" + (i + 1));
mtb.setMapTag("mapTag" + (i + 1));
mtbs.add(mtb);
}
root.put("mtbs", mtbs);
/* Get the template (uses cache internally) */
Template temp = cfg.getTemplate("test.ftl");
/* Merge data-model with template */
Writer out = new OutputStreamWriter(System.out);
temp.process(root, out);
/* change to String */
StringWriter swriter = new StringWriter();
temp.process(root, swriter);
/* File out */
FileUtils.write(new File("file.html"), swriter.toString(), "UTF-8");
}
结果
<tr><td>mapName1</td><td>mapTag1</td></tr>
<tr><td>mapName2</td><td>mapTag2</td></tr>
<tr><td>mapName3</td><td>mapTag3</td></tr>
<tr><td>mapName4</td><td>mapTag4</td></tr>
以上,使用了很简单的freemarker的功能。
官网API
http://freemarker.foofun.cn/index.html
编写测试模板
http://freemarker-online.kenshoo.com/