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

相关文章

使用EasyPoi快速导出Word文档功能的实现步骤

《使用EasyPoi快速导出Word文档功能的实现步骤》EasyPoi是一个基于ApachePOI的开源Java工具库,旨在简化Excel和Word文档的操作,本文将详细介绍如何使用EasyPoi快速... 目录一、准备工作1、引入依赖二、准备好一个word模版文件三、编写导出方法的工具类四、在Export

前端导出Excel文件出现乱码或文件损坏问题的解决办法

《前端导出Excel文件出现乱码或文件损坏问题的解决办法》在现代网页应用程序中,前端有时需要与后端进行数据交互,包括下载文件,:本文主要介绍前端导出Excel文件出现乱码或文件损坏问题的解决办法,... 目录1. 检查后端返回的数据格式2. 前端正确处理二进制数据方案 1:直接下载(推荐)方案 2:手动构造

C#利用Free Spire.XLS for .NET复制Excel工作表

《C#利用FreeSpire.XLSfor.NET复制Excel工作表》在日常的.NET开发中,我们经常需要操作Excel文件,本文将详细介绍C#如何使用FreeSpire.XLSfor.NET... 目录1. 环境准备2. 核心功能3. android示例代码3.1 在同一工作簿内复制工作表3.2 在不同

java读取excel文件为base64实现方式

《java读取excel文件为base64实现方式》文章介绍使用ApachePOI和EasyExcel处理Excel文件并转换为Base64的方法,强调EasyExcel适合大文件且内存占用低,需注意... 目录使用 Apache POI 读取 Excel 并转换为 Base64使用 EasyExcel 处

Python Excel 通用筛选函数的实现

《PythonExcel通用筛选函数的实现》本文主要介绍了PythonExcel通用筛选函数的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录案例目的示例数据假定数据来源是字典优化:通用CSV数据处理函数使用说明使用示例注意事项案例目的第一

JAVA实现亿级千万级数据顺序导出的示例代码

《JAVA实现亿级千万级数据顺序导出的示例代码》本文主要介绍了JAVA实现亿级千万级数据顺序导出的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 前提:主要考虑控制内存占用空间,避免出现同时导出,导致主程序OOM问题。实现思路:A.启用线程池

Java利用Spire.XLS for Java设置Excel表格边框

《Java利用Spire.XLSforJava设置Excel表格边框》在日常的业务报表和数据处理中,Excel表格的美观性和可读性至关重要,本文将深入探讨如何利用Spire.XLSforJava库... 目录Spire.XLS for Java 简介与安装Maven 依赖配置手动安装 JAR 包核心API介

springboot集成easypoi导出word换行处理过程

《springboot集成easypoi导出word换行处理过程》SpringBoot集成Easypoi导出Word时,换行符n失效显示为空格,解决方法包括生成段落或替换模板中n为回车,同时需确... 目录项目场景问题描述解决方案第一种:生成段落的方式第二种:替换模板的情况,换行符替换成回车总结项目场景s

Python实现Excel批量样式修改器(附完整代码)

《Python实现Excel批量样式修改器(附完整代码)》这篇文章主要为大家详细介绍了如何使用Python实现一个Excel批量样式修改器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录前言功能特性核心功能界面特性系统要求安装说明使用指南基本操作流程高级功能技术实现核心技术栈关键函

oracle 11g导入\导出(expdp impdp)之导入过程

《oracle11g导入导出(expdpimpdp)之导入过程》导出需使用SEC.DMP格式,无分号;建立expdir目录(E:/exp)并确保存在;导入在cmd下执行,需sys用户权限;若需修... 目录准备文件导入(impdp)1、建立directory2、导入语句 3、更改密码总结上一个环节,我们讲了