freemarker 导出Excel

2024-06-12 08:48
文章标签 excel 导出 freemarker

本文主要是介绍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 类, 作为数据模型

[java]  view plain copy
  1. public class Student {  
  2.   
  3.     private int id;  
  4.     private String name;  
  5.     private int grade;  
  6.     private int cls;  
  7.     private float english;  
  8.     private float chinese;  
  9.     private float math;  
  10.   
  11.     public Student(Integer id, String name, int grade, int cls, float english, float chinese, float math) {  
  12.         super();  
  13.         this.id = id;  
  14.         this.name = name;  
  15.         this.grade = grade;  
  16.         this.cls = cls;  
  17.         this.english = english;  
  18.         this.chinese = chinese;  
  19.         this.math = math;  
  20.     }  
  21.   
  22.     public Student() {  
  23.         super();  
  24.     }  
  25.   
  26.     public Integer getId() {  
  27.         return id;  
  28.     }  
  29.   
  30.     public void setId(Integer id) {  
  31.         this.id = id;  
  32.     }  
  33.   
  34.     public String getName() {  
  35.         return name;  
  36.     }  
  37.   
  38.     public void setName(String name) {  
  39.         this.name = name;  
  40.     }  
  41.   
  42.     public int getGrade() {  
  43.         return grade;  
  44.     }  
  45.   
  46.     public void setGrade(int grade) {  
  47.         this.grade = grade;  
  48.     }  
  49.   
  50.     public int getCls() {  
  51.         return cls;  
  52.     }  
  53.   
  54.     public void setCls(int cls) {  
  55.         this.cls = cls;  
  56.     }  
  57.   
  58.     public float getEnglish() {  
  59.         return english;  
  60.     }  
  61.   
  62.     public void setEnglish(float english) {  
  63.         this.english = english;  
  64.     }  
  65.   
  66.     public float getChinese() {  
  67.         return chinese;  
  68.     }  
  69.   
  70.     public void setChinese(float chinese) {  
  71.         this.chinese = chinese;  
  72.     }  
  73.   
  74.     public float getMath() {  
  75.         return math;  
  76.     }  
  77.   
  78.     public void setMath(float math) {  
  79.         this.math = math;  
  80.     }  
  81.   
  82. }  

8. 写一个测试类,来生成Excel

[java]  view plain copy
  1. import java.io.File;  
  2. import java.io.FileWriter;  
  3. import java.util.ArrayList;  
  4. import java.util.HashMap;  
  5. import java.util.List;  
  6. import java.util.Map;  
  7. import freemarker.template.Configuration;  
  8. import freemarker.template.Template;  
  9.   
  10. public class Test_export_Excel {  
  11.       
  12.       
  13.     /** 设置表格标题    */  
  14.     private static List<String> getTitles(){  
  15.         List<String> titles = new ArrayList<>();  
  16.         titles.add("序号");  
  17.         titles.add("姓名");  
  18.         titles.add("年级");  
  19.         titles.add("班级");  
  20.         titles.add("语文");  
  21.         titles.add("数学");  
  22.         titles.add("英语");  
  23.         return titles;  
  24.     }  
  25.       
  26.     /** 设置表格内容    */  
  27.     private static List<Student> getStudents(){  
  28.         List<Student> students = new ArrayList<>();  
  29.         for(int i=0; i<10; i++){  
  30.             Student student = new Student(100 + i, "zong_"+i, 1+i, 2+i, 90+i, 80+i, 100-i);  
  31.             students.add(student);  
  32.         }  
  33.         return students;  
  34.     }  
  35.       
  36.       
  37.     public static void main(String[] args) throws Exception{  
  38.           
  39.         //加载freemarker 模板,获取模板对象  
  40.         Configuration cfg = new Configuration();  
  41.         cfg.setDirectoryForTemplateLoading(new File("templates"));   
  42.         Template studentTemplate = cfg.getTemplate("excel_student.ftl");  
  43.           
  44.         //设置表格标题和内容  
  45.         List<String> titles = getTitles();  
  46.         List<Student> students = getStudents();  
  47.         Map root = new HashMap();  
  48.         root.put("titles", titles);  
  49.         root.put("students", students);  
  50.           
  51.         File file = new File("D:/excel_students.xls");  
  52.         FileWriter fw = new FileWriter(file);  
  53.           
  54.         //按照ftl 模板规定的样式,将root 对象里的内容写入新的文件  
  55.         studentTemplate.process(root, fw);  
  56.           
  57.         fw.flush();  
  58.         fw.close();  
  59.     }  
  60. }  

9. 生成效果图:



10. 项目包结构视图:


【注】 此种方式生成的Excel 只能用 excel 07 之后的版本打开,office 07 及之前的版本不能打开。


本文转自 http://blog.csdn.net/zgf19930504/article/details/50774337

这篇关于freemarker 导出Excel的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1053745

相关文章

C#关闭指定时间段的Excel进程的方法

private DateTime beforeTime;            //Excel启动之前时间          private DateTime afterTime;               //Excel启动之后时间          //举例          beforeTime = DateTime.Now;          Excel.Applicat

MySQL使用mysqldump导出数据

mysql mysqldump只导出表结构或只导出数据的实现方法 备份数据库: #mysqldump 数据库名 >数据库备份名 #mysqldump -A -u用户名 -p密码 数据库名>数据库备份名 #mysqldump -d -A --add-drop-table -uroot -p >xxx.sql 1.导出结构不导出数据 mysqldump --opt -d 数据库名 -u

一步一步将PlantUML类图导出为自定义格式的XMI文件

一步一步将PlantUML类图导出为自定义格式的XMI文件 说明: 首次发表日期:2024-09-08PlantUML官网: https://plantuml.com/zh/PlantUML命令行文档: https://plantuml.com/zh/command-line#6a26f548831e6a8cPlantUML XMI文档: https://plantuml.com/zh/xmi

excel翻译软件有哪些?如何高效提翻译?

你是否曾在面对满屏的英文Excel表格时感到头疼?项目报告、数据分析、财务报表... 当这些重要的信息被语言壁垒阻挡时,效率和理解度都会大打折扣。别担心,只需3分钟,我将带你轻松解锁excel翻译成中文的秘籍。 无论是职场新人还是老手,这一技巧都将是你的得力助手,让你在信息的海洋中畅游无阻。 方法一:使用同声传译王软件 同声传译王是一款专业的翻译软件,它支持多种语言翻译,可以excel

终于解决了excel操作及cspreadsheet.h问题

困扰多日的excel操作问题终于解决:利用cspreadsheet.h!在vs2005下,不能直接应用cspreadsheet.h,所以必须解决些问题先。 首先, 出现暴多错误。解决UNICODE问题,全部添加L。 [1] +++++++++++++++++++ 其次, 出现问题: error   C2664:   &apos;SQLGetInstalledDriversW &apos;

关于使用cspreadsheet读写EXCEL表格数据的问题

前几天项目有读写EXCEL表格的需求,我就找了大概有几种,大致分为:COM方法、ODBC方法、OLE方法、纯底层格式分析方法。由于COM方法要求必须安装有OFFICE的EXCEL组件,纯底层格式分析方法又很多功能需要自行去完善,所有最终选择了数据库的方法,用数据库的方法去存取xls格式的数据。网上有一个高手写的CSpreedSheet,看了一下提供的接口,感觉挺好用的。在使用的过程中发现几个

Excel和Word日常使用记录:

Excel使用总结 表格颜色填充: 合并单元格: 选中你要合并的单元格区域。按下快捷键 Alt + H,然后松开这些键。再按下 M,接着按 C。这个组合键执行的操作是:Alt + H:打开“主页”选项卡。M:选择“合并单元格”选项。C:执行“合并并居中”操作。 插入行: 在Excel中,插入一行的快捷键是:Windows:选择整行(可以点击行号)。按下 Ctrl + Sh

SpringBoot中利用EasyExcel+aop实现一个通用Excel导出功能

一、结果展示 主要功能:可以根据前端传递的参数,导出指定列、指定行 1.1 案例一 前端页面 传递参数 {"excelName": "导出用户信息1725738666946","sheetName": "导出用户信息","fieldList": [{"fieldName": "userId","fieldDesc": "用户id"},{"fieldName": "age","fieldDe

如何在Excel中根据单元格内容作MSnbsp;…

上篇文章,我们介绍了INDEX+SMALL+IF+ROW的数组公式组合,也就是说只要在IF中通过条件的构造,基本上就可以想提取什么条件的数据都可以,数据查询肯定得心应手。 但是,我们一起强调函数公式不是万能的,尤其是数组公式在海量数据面前,既是软肋也是硬伤,而且构造这个函数组合还需要你要具备或者能理解简单数组公式逻辑,对于在函数公式方面没有深究的人,自然是一头雾水。当然,就像“数据透视表”一样,

Unity数据持久化 之 一个通过2进制读取Excel并存储的轮子(4)

本文仅作笔记学习和分享,不用做任何商业用途 本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正​​ Unity数据持久化 之 一个通过2进制读取Excel并存储的轮子(3)-CSDN博客  这节就是真正的存储数据了   理清一下思路: 1.存储路径并检查 //2进制文件类存储private static string Data_Binary_Pa