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

相关文章

Python创建Excel的4种方式小结

《Python创建Excel的4种方式小结》这篇文章主要为大家详细介绍了Python中创建Excel的4种常见方式,文中的示例代码简洁易懂,具有一定的参考价值,感兴趣的小伙伴可以学习一下... 目录库的安装代码1——pandas代码2——openpyxl代码3——xlsxwriterwww.cppcns.c

Python给Excel写入数据的四种方法小结

《Python给Excel写入数据的四种方法小结》本文主要介绍了Python给Excel写入数据的四种方法小结,包含openpyxl库、xlsxwriter库、pandas库和win32com库,具有... 目录1. 使用 openpyxl 库2. 使用 xlsxwriter 库3. 使用 pandas 库

使用Python在Excel中创建和取消数据分组

《使用Python在Excel中创建和取消数据分组》Excel中的分组是一种通过添加层级结构将相邻行或列组织在一起的功能,当分组完成后,用户可以通过折叠或展开数据组来简化数据视图,这篇博客将介绍如何使... 目录引言使用工具python在Excel中创建行和列分组Python在Excel中创建嵌套分组Pyt

使用Python在Excel中插入、修改、提取和删除超链接

《使用Python在Excel中插入、修改、提取和删除超链接》超链接是Excel中的常用功能,通过点击超链接可以快速跳转到外部网站、本地文件或工作表中的特定单元格,有效提升数据访问的效率和用户体验,这... 目录引言使用工具python在Excel中插入超链接Python修改Excel中的超链接Python

如何利用Python实现给Excel表格截图

《如何利用Python实现给Excel表格截图》这篇文章主要为大家详细介绍了如何利用Python实现给Excel表格截图功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 我搜索了网络上的方案,感觉把 Excel 表格转换为 html 再用 platwright 截图是比China编程较顺

Java导出Excel动态表头的示例详解

《Java导出Excel动态表头的示例详解》这篇文章主要为大家详细介绍了Java导出Excel动态表头的相关知识,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录前言一、效果展示二、代码实现1.固定头实体类2.动态头实现3.导出动态头前言本文只记录大致思路以及做法,代码不进

10个Python Excel自动化脚本分享

《10个PythonExcel自动化脚本分享》在数据处理和分析的过程中,Excel文件是我们日常工作中常见的格式,本文将分享10个实用的Excel自动化脚本,希望可以帮助大家更轻松地掌握这些技能... 目录1. Excel单元格批量填充2. 设置行高与列宽3. 根据条件删除行4. 创建新的Excel工作表5

使用Python合并 Excel单元格指定行列或单元格范围

《使用Python合并Excel单元格指定行列或单元格范围》合并Excel单元格是Excel数据处理和表格设计中的一项常用操作,本文将介绍如何通过Python合并Excel中的指定行列或单... 目录python Excel库安装Python合并Excel 中的指定行Python合并Excel 中的指定列P

C#实现添加/替换/提取或删除Excel中的图片

《C#实现添加/替换/提取或删除Excel中的图片》在Excel中插入与数据相关的图片,能将关键数据或信息以更直观的方式呈现出来,使文档更加美观,下面我们来看看如何在C#中实现添加/替换/提取或删除E... 在Excandroidel中插入与数据相关的图片,能将关键数据或信息以更直观的方式呈现出来,使文档更

详解Vue如何使用xlsx库导出Excel文件

《详解Vue如何使用xlsx库导出Excel文件》第三方库xlsx提供了强大的功能来处理Excel文件,它可以简化导出Excel文件这个过程,本文将为大家详细介绍一下它的具体使用,需要的小伙伴可以了解... 目录1. 安装依赖2. 创建vue组件3. 解释代码在Vue.js项目中导出Excel文件,使用第三