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中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

Java easyExcel实现导入多sheet的Excel

《JavaeasyExcel实现导入多sheet的Excel》这篇文章主要为大家详细介绍了如何使用JavaeasyExcel实现导入多sheet的Excel,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录1.官网2.Excel样式3.代码1.官网easyExcel官网2.Excel样式3.代码

Java Web实现类似Excel表格锁定功能实战教程

《JavaWeb实现类似Excel表格锁定功能实战教程》本文将详细介绍通过创建特定div元素并利用CSS布局和JavaScript事件监听来实现类似Excel的锁定行和列效果的方法,感兴趣的朋友跟随... 目录1. 模拟Excel表格锁定功能2. 创建3个div元素实现表格锁定2.1 div元素布局设计2.

C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式

《C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式》Markdown凭借简洁的语法、优良的可读性,以及对版本控制系统的高度兼容性,逐渐成为最受欢迎的文档格式... 目录为什么要将文档转换为 Markdown 格式使用工具将 Word 文档转换为 Markdown(.

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元

Python实现pdf电子发票信息提取到excel表格

《Python实现pdf电子发票信息提取到excel表格》这篇文章主要为大家详细介绍了如何使用Python实现pdf电子发票信息提取并保存到excel表格,文中的示例代码讲解详细,感兴趣的小伙伴可以跟... 目录应用场景详细代码步骤总结优化应用场景电子发票信息提取系统主要应用于以下场景:企业财务部门:需

Mac备忘录怎么导出/备份和云同步? Mac备忘录使用技巧

《Mac备忘录怎么导出/备份和云同步?Mac备忘录使用技巧》备忘录作为iOS里简单而又不可或缺的一个系统应用,上手容易,可以满足我们日常生活中各种记录的需求,今天我们就来看看Mac备忘录的导出、... 「备忘录」是 MAC 上的一款常用应用,它可以帮助我们捕捉灵感、记录待办事项或保存重要信息。为了便于在不同

Python处理大量Excel文件的十个技巧分享

《Python处理大量Excel文件的十个技巧分享》每天被大量Excel文件折磨的你看过来!这是一份Python程序员整理的实用技巧,不说废话,直接上干货,文章通过代码示例讲解的非常详细,需要的朋友可... 目录一、批量读取多个Excel文件二、选择性读取工作表和列三、自动调整格式和样式四、智能数据清洗五、

Python Pandas高效处理Excel数据完整指南

《PythonPandas高效处理Excel数据完整指南》在数据驱动的时代,Excel仍是大量企业存储核心数据的工具,Python的Pandas库凭借其向量化计算、内存优化和丰富的数据处理接口,成为... 目录一、环境搭建与数据读取1.1 基础环境配置1.2 数据高效载入技巧二、数据清洗核心战术2.1 缺失