之前我们导excel大部分用的是jxl和poi,JXL只能对Excel进行操作,属于比较老的框架,它只支持到Excel 95-2000的版本。现在已经停止更新和维护

POI是apache的项目,可对微软的Word,Excel,ppt等进行操作,包括office2003和2007,Excl2003和2007。poi现在一直有更新。所以现在主流使用POI

如果只是简单的excel,用上述工具导出没有任何问题,但如果导出定制化复杂的excel或word,就会显得很繁琐,代码也有一定难度,所以我尝试用freemarker

来导出

先制作一个定制的excel

新建一个excel,在里面写上点数据并将后缀改为.xml

将下图的 1和张三改一下以接收数据,将excel复制到项目的resource目录中将后缀名改为.ftl

到这一步excel已经好了,接下来就是代码

需要的maven包

org.freemarker

freemarker

2.3.20

导出的方法

package com.pskj.GSLZ.utils.word;

import freemarker.template.Configuration;

import freemarker.template.Template;

import freemarker.template.TemplateException;

import java.io.*;

import java.util.HashMap;

import java.util.Map;/**

* word,excel导出*/

public classFreemarkerWord {private Configuration configuration = null;publicFreemarkerWord() {

configuration= newConfiguration();

configuration.setDefaultEncoding("utf-8");

}/**

* dataMap为要装载的数据

* @param dataMap*/

public voidcreateDoc(Map dataMap) {//设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库装载,//这里我的模板是放在resources/ftl包下(放在其它位置总会报文件找不到)

configuration.setClassForTemplateLoading(this.getClass(),"/ftl");

Template t= null;try{//test2.ftl为要装载的模板

t= configuration.getTemplate("test2.ftl");

t.setEncoding("utf-8");

}catch(IOException e) {

e.printStackTrace();

}//输出文档路径及名称

File outFile= new File("E:/test2.xls");

Writerout = null;try{out = new BufferedWriter(newOutputStreamWriter(new FileOutputStream(outFile), "utf-8"));

}catch(Exception e1) {

e1.printStackTrace();

}try{

t.process(dataMap,out);out.close();

}catch(TemplateException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}

}public static voidmain(String[] args) {

Map map=newHashMap();

map.put("id", "1");//添加数据

map.put("name", "光头权");

FreemarkerWord fw=newFreemarkerWord();

fw.createDoc(map);//调用导出方法

}

}

运行之后

再就是导出多条数据,修改之后的可循环遍历数据

查询数据库后调用导出方法,数据也能正常导出

/**

* 根据excel模板导出数据*/@RequestMapping("listAll")

@ResponseBodypublic voidlistAll() {

PageData pd=this.getPageData();//用于接受参数的封装类

FreemarkerWord fw=new FreemarkerWord();//实例化该导出类

Map dataMap = newHashMap();try{

List list=fhlogService.listAll(pd);//获取多组数据

dataMap.put("list",list);//将数据装进Map

fw.createDoc(dataMap);//调用导出方法

}catch(Exception e){

e.printStackTrace();

}

}

参考链接: https://blog.csdn.net/guangcigeyun/article/details/78769704

参考链接: https://www.jianshu.com/p/66645b71942f

ftl模板导出excel_freemarker导出定制excel相关推荐

  1. ftl模板导出excel_freemarker导出复杂Excel

    原文: freemarker导出复杂Excel date: 2017-04-20 12:39:04 [TOC] 序言 用Freemarker做Excel导出确实很容易. 但是导出复杂Excel, 例如 ...

  2. ftl模板导出excel_freemarker导出Excel

    freemarker 导出Excel 原创 2015年10月23日 14:47:05 927 在项目开发中,导出Excel 是比较常见的功能, 以前用过POI导出Excel 文件, 但是POI 在使用 ...

  3. ftl模板导出excel_使用freemark模板生成excel

    1.背景 文件操作中导入导出功能在项目中十分常见,这里我们要聊的是导出excel这一功能.老话题常谈常新,小编给大家介绍使用freemark模板的方式导出excel. 2.实现 Demo中采用spri ...

  4. ftl模板导出excel_使用freemarker模板引擎导出word或excel文件(代码实现)

    在项目中我们会遇到很多导入导出excel或者word 有时候一些比较复杂的表格设计用freemarker 来做为模板导出还是很不错的 具体操作 我们要针对该列表做数据导出模板 在桌面右键新建一个exc ...

  5. java通过ftl模板导出word最详细教程

    百度云链接 链接: https://pan.baidu.com/s/1OEzvsFSqAelstDtu2mo5xw 提取码: fdhq https://pan.baidu.com/s/1OEzvsFS ...

  6. Excel模板数据填充导出

    Excel模板数据填充导出 需求描述: POI实现 1.添加依赖: <dependency><groupId>org.apache.poi</groupId>< ...

  7. freemarker/ftl模板/导出doc 单元格合并注意事项

    在现有模板上添加新表格数据      word 导出 2003版xml 和默认版本xml  是有区别的,如果已经创建好的ftl模板文件,后期维护添加图表,则必须使用同样版本的xml进行模板数据的追加. ...

  8. freemarker/ftl模板/导出doc 单元格合并注意事项(一)

    在现有模板上添加新表格数据      word 导出 2003版xml 和默认版本xml  是有区别的,如果已经创建好的ftl模板文件,后期维护添加图表,则必须使用同样版本的xml进行模板数据的追加. ...

  9. ftl模板导出word简历

    ftl模板导出 1.新建 word 文档模板 新建 word 文档(muban.doc),编辑该文档作为样板数据文档: 2.将 word 文档另存为 xml 3.将 xml 文档重命名为 ftl 将上 ...

最新文章

  1. 某互联网企业技术发展史(四)配置nginx和mysql兼容Yii框架,上传网站并调试成功...
  2. Java 技术篇-使用IDEA开发java代码实例演示,IntelliJ IDEA的安装与使用
  3. [HNOI2007]分裂游戏
  4. laravel模型中设计使用单选按钮的方法:
  5. python拼接mysql时遇到unsupported format character ‘?‘ “(0x82f1)“
  6. ai快捷键常用表_遇到这些办公软件快捷键赶集收藏-mark 视频剪辑|办公软件...
  7. 电脑小常识:电脑键盘失灵怎么办?
  8. epson彩色打印机加墨水_爱普生打印机墨盒如何加墨?
  9. Qt工作笔记- 解决cc1plus.exe: error: out of memory allocating
  10. nmap扫描ipv6端口_Flan Scan:Cloudflare开源的轻量级网络漏洞扫描程序
  11. 销售系统软件mysql_Max(TM)销售管理系统
  12. 36岁程序员:领导平时称兄道弟,裁员时立刻变脸,看透人性
  13. c语言次幂如何表达_如何确保分布式场景下的并发幂等性?
  14. python安装csv出错_python处理csv文件问题解决贴
  15. 【Qt点滴】UDP协议实例:简易广播实现
  16. React Advanced 备忘
  17. 响应式图片srcset全新释义sizes属性w描述符
  18. go语言阶段综合练习--家庭收支软件的示例--过程版本
  19. word手动设置编号起始值
  20. 【读书笔记】金字塔原理-目录

热门文章

  1. 小米笔记本电脑故障——USB口拷贝文件中断/电池在低温时无输出
  2. 【机器视觉系统】基于3DOF机械臂的五子棋机器人(1)
  3. 这100 个网络基础知识 看完成半个网络高手
  4. “功夫高考”之高考状元的七种武器
  5. python简单爬取斗图图片(自学第十天)
  6. 小学生终究干不过富婆?《王者荣耀》返场皮肤厨娘夺冠,猴子落榜
  7. 搭建Spring Boot2.X集成Hibernate5项目,并集成传统SSH老项目的安全认证组件,以Spring Boot方式开发项目并集成到老系统
  8. Apache Archiva搭建Maven私人服务器
  9. sql强化演练( goods 表练习)—04
  10. 企业薪酬 ▶管理八大痛苦八大处方