本文主要是介绍freemarker 导出Excel,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在项目开发中,导出Excel 是比较常见的功能, 以前用过POI导出Excel 文件, 但是POI 在使用方面比较麻烦, 而用freemarker 来导出Excel 会简单很多。
1. 创建Excel文件:student.xls ,你想生成什么样式的Excel 文件, 先做一个模板。
2. 另存为 xml 文件: studen.xml。
3. 将student.xml 文件,copy 到Eclipse中,进行格式化:Ctrl + Shift + F
4. 替换响应的部分:
【替换前】
【替换后】
5. 将studnet.xml 文件重命名为 freemarker 模板文件: student.ftl . 到此,导出excel 的模板文件就制作完成了。
7. 创建一个Student 类, 作为数据模型
- public class Student {
-
- private int id;
- private String name;
- private int grade;
- private int cls;
- private float english;
- private float chinese;
- private float math;
-
- public Student(Integer id, String name, int grade, int cls, float english, float chinese, float math) {
- super();
- this.id = id;
- this.name = name;
- this.grade = grade;
- this.cls = cls;
- this.english = english;
- this.chinese = chinese;
- this.math = math;
- }
-
- public Student() {
- super();
- }
-
- public Integer getId() {
- return id;
- }
-
- public void setId(Integer id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public int getGrade() {
- return grade;
- }
-
- public void setGrade(int grade) {
- this.grade = grade;
- }
-
- public int getCls() {
- return cls;
- }
-
- public void setCls(int cls) {
- this.cls = cls;
- }
-
- public float getEnglish() {
- return english;
- }
-
- public void setEnglish(float english) {
- this.english = english;
- }
-
- public float getChinese() {
- return chinese;
- }
-
- public void setChinese(float chinese) {
- this.chinese = chinese;
- }
-
- public float getMath() {
- return math;
- }
-
- public void setMath(float math) {
- this.math = math;
- }
-
- }
8. 写一个测试类,来生成Excel
- import java.io.File;
- import java.io.FileWriter;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import freemarker.template.Configuration;
- import freemarker.template.Template;
-
- public class Test_export_Excel {
-
-
-
- private static List<String> getTitles(){
- List<String> titles = new ArrayList<>();
- titles.add("序号");
- titles.add("姓名");
- titles.add("年级");
- titles.add("班级");
- titles.add("语文");
- titles.add("数学");
- titles.add("英语");
- return titles;
- }
-
-
- private static List<Student> getStudents(){
- List<Student> students = new ArrayList<>();
- for(int i=0; i<10; i++){
- Student student = new Student(100 + i, "zong_"+i, 1+i, 2+i, 90+i, 80+i, 100-i);
- students.add(student);
- }
- return students;
- }
-
-
- public static void main(String[] args) throws Exception{
-
-
- Configuration cfg = new Configuration();
- cfg.setDirectoryForTemplateLoading(new File("templates"));
- Template studentTemplate = cfg.getTemplate("excel_student.ftl");
-
-
- List<String> titles = getTitles();
- List<Student> students = getStudents();
- Map root = new HashMap();
- root.put("titles", titles);
- root.put("students", students);
-
- File file = new File("D:/excel_students.xls");
- FileWriter fw = new FileWriter(file);
-
-
- studentTemplate.process(root, fw);
-
- fw.flush();
- fw.close();
- }
- }
9. 生成效果图:
10. 项目包结构视图:
【注】 此种方式生成的Excel 只能用 excel 07 之后的版本打开,office 07 及之前的版本不能打开。
本文转自 http://blog.csdn.net/zgf19930504/article/details/50774337
这篇关于freemarker 导出Excel的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!