JAVA 使用FREEMARKER制作EXCEL
2017-09-20 16:20
811 查看
背景:最近有一个需求要制作一个样式十分丰富的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>
需要的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>
相关文章推荐
- java使用 freemarker 模板生成一个excel文件多个sheet
- Java使用freemarker导出word和excel
- java使用freemarker模版下载成Excel文件
- 使用JasperReport和iReport制作java报表
- 在EasyJWeb中使用Java Excel API 处理电子表格
- 使用java操作Excel入门 ---- jxl介绍
- 在JAVA项目中,使用JasperReports与iReport,直接连接打印机可打印(word excel xml pdf )文档
- 使用JavaExcel API 往excel中插入图片
- 在EasyJWeb中使用Java Excel API 处理电子表格
- 使用java完成一个简单的播放器的制作
- 在EasyJWeb中使用Java Excel API 处理电子表格
- 使用JAVA读取EXCEL文件里面的数据
- 使用JAVA读取EXCEL文件里面的数据
- 使用java操作Excel入门
- 在EasyJWeb中使用Java Excel API 处理电子表格
- 使用JasperReport和iReport制作java报表- -(转)
- 使用java读取Excel——poi
- 使用Java读取Excel文件内容
- 在EasyJWeb中使用Java Excel API 处理电子表格
- 非java.util.zip,使用ant.jar制作zip压缩文件,以及相关中文解决方法