成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java技術:SpringBoot集成FreeMarker生成word文件

開源
FreeMarker 是一款開源的模板引擎:是一種基于模板和要動態填充的數據,可以用來動態渲染生成輸出文本(HTML網頁,Word文檔,電子郵件,配置文件,源代碼等)的通用技術。

今天給大家分享SpringBoot集成FreeMarker模板引擎生成word文件的用法,感興趣的可以學一下,完整源碼地址在文章末尾處,歡迎互相溝通交流!

一、什么是FreeMarker?

FreeMarker 是一款開源的模板引擎:是一種基于模板和要動態填充的數據,可以用來動態渲染生成輸出文本(HTML網頁,Word文檔,電子郵件,配置文件,源代碼等)的通用技術。

模板編寫為FreeMarker Template Language (FTL):它是簡單的,專用的語言, 不是像PHP那樣擁有完整成熟的編程語言。所以它主要專注于如何展現數據,具體要展示什么數據那就需要成熟的編程語言來實現(Java、C#、Python)等。

FreeMarker原理圖如下:

二、示例代碼

1、導入freemarker依賴包

<!--freemarker制作Html郵件模板依賴包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

2、application.yml 配置freemarker

freemarker:
cache: false #是否啟用緩存,開發環境不建議啟動因為涉及經常修改模板調試
settings:
classic_compatible: true
suffix: .html #一般格式tpl居多
charset: UTF-8
template-loader-path: classpath:/templates/ #模板路徑,一般都是這個

3、新建IExportService.java 類

package com.springboot.email.email.service;

import javax.servlet.http.HttpServletResponse;
import java.util.Map;

public interface IExportService {
/**
* 導出word文件到指定目錄
*/
void exportDocFile(String fileName, String tplName, Map<String, Object> data) throws Exception;
/**
* 導出word文件到客戶端
*/
void exportDocToClient(HttpServletResponse response, String fileName, String tplName, Map<String, Object> data) throws Exception;
}

4、新建IExportService.java接口實現類ExportServiceImpl.java

package com.springboot.email.email.service.impl;

import com.springboot.email.email.service.IExportService;
import freemarker.template.Template;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;

import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.util.Map;

@Service
public class ExportServiceImpl implements IExportService {
private String encoding;
private String exportPath = "D:\\export\\";
@Autowired
private FreeMarkerConfigurer freeMarkerConfigurer;
public Template getTemplate(String name) throws Exception {
return freeMarkerConfigurer.getConfiguration().getTemplate("test.html");
}


/**
* 導出本地文件到指定的目錄
*/
@Override
public void exportDocFile(String fileName, String tplName, Map<String, Object> data) throws Exception {
//如果目錄不存在,則創建目錄
File exportDirs = new File(exportPath);
if (!exportDirs.exists()) {
exportDirs.mkdirs();
}
Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(exportPath + fileName), encoding));
getTemplate(tplName).process(data, writer);
}

/**
* 導出word文件到瀏覽器客戶端
*/
@Override
public void exportDocToClient(HttpServletResponse response, String fileName, String tplName, Map<String, Object> data) throws Exception {
response.reset();
response.setCharacterEncoding("UTF-8");
response.setContentType("application/msword");
response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName , "UTF-8"));
// 把本地文件發送給客戶端
Writer out = response.getWriter();
Template template = getTemplate(tplName);
template.process(data, out);
out.close();
}
}

5、新建模板文件test.html

具體文件參考源碼,模板文件的制作方式,新建word文件調整格式后→另存為xml格式的文件→局部調整文件循環標記→然后格式保存為html格式的文件 放在項目當中去。

如果有不清楚的可以留言交流。

6、新建測試類ExportController.java

@RestController
@RequestMapping("/export")
public class ExportController {
@Autowired
private IExportService exportService;
@RequestMapping(value = "/testWord", method= RequestMethod.GET)
public void exportWord(HttpServletRequest request, HttpServletResponse response) throws Exception {
String fileName = "測試word導出.doc"; //文件名稱
// 設置頭部數據
Map<String,Object> dataMap = new HashMap<>();
dataMap.put("name","小明");
dataMap.put("regAddress","蘇州");
// 設置表格數據
List<ScoreVo> list=new ArrayList<>();
ScoreVo vo1=new ScoreVo();
vo1.setCourseName("英語");
vo1.setScore(95);
vo1.setRank(3);
ScoreVo vo2=new ScoreVo();
vo2.setCourseName("數學");
vo2.setScore(100);
vo2.setRank(1);
list.add(vo1);
list.add(vo2);
dataMap.put("courseList",list);
exportService.exportDocToClient(response, fileName, "test.html", dataMap);
}
}

訪問地址:http://localhost:8080/export/testWord

導出文件效果:

Gitee地址:https://gitee.com/hgm1989/springboot-email.git

責任編輯:武曉燕 來源: IT技術分享社區
相關推薦

2024-09-03 08:26:59

Spring格式模板

2011-06-23 09:13:20

JavaWord

2017-07-06 14:32:27

靜態化FreeMarkerjava

2024-07-15 15:05:20

Python數據驅動

2021-05-26 06:22:34

SpringBootJPA后端開發

2021-06-05 07:34:00

SpringBootMybatis用法

2021-07-11 07:05:28

RedisSpringBoot用法

2023-01-11 15:11:36

SpringEhcache

2012-03-06 15:34:05

JavaFreeMarker

2023-02-14 07:47:20

SpringBootEhcache

2021-04-21 09:04:43

開發SpringBoot框架

2024-03-15 14:34:12

Oracle數據庫一鍵巡檢

2009-08-07 09:19:13

云計算集成技術

2012-05-14 17:21:19

ibmdw

2024-11-29 12:58:13

2009-09-01 11:25:08

C#讀取Word文件

2021-06-25 10:05:58

SpringBootMySQL數據庫

2009-08-18 13:35:08

C#動態生成Word文

2011-11-30 21:54:11

ibmdwDominoSAP

2017-03-10 18:29:17

Androidfreemarker應用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲三级在线 | 天天成人综合网 | 91精品国产综合久久久久蜜臀 | 亚洲一区中文字幕 | 亚洲一二三在线 | 少妇一区二区三区 | 羞羞视频免费在线观看 | 久久国产一区二区三区 | 涩涩视频在线观看 | 中文字幕一区在线观看视频 | 小草久久久久久久久爱六 | 日韩无 | 日韩精品在线免费观看 | 爱操影视 | 国产精品人人做人人爽 | 日韩一区二区三区av | 国产探花在线精品一区二区 | 男人天堂视频在线观看 | 午夜精品一区二区三区在线播放 | 国产网站在线免费观看 | 久久综合久 | 国产一区二区三区 | 天天拍天天插 | 久久精品中文字幕 | 三级黄色网址 | 精品一区二区三区在线观看 | 黄色大片在线播放 | 亚洲日本一区二区 | 一级黄色网页 | 精品免费国产一区二区三区 | 中文字幕国产视频 | 午夜免费视频 | 日本不卡一区二区三区 | 中文天堂在线观看 | 成人免费视频网站在线看 | 国产中文字幕在线观看 | 激情亚洲 | 国产一区二区三区高清 | 三级成人在线观看 | 97日韩精品 | 亚洲成人高清 |