8、jeecg 笔记之 自定义word 模板导出(一)
生活随笔
收集整理的這篇文章主要介紹了
8、jeecg 笔记之 自定义word 模板导出(一)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
8、jeecg 筆記之 自定義word 模板導(dǎo)出(一)
1、前言
jeecg 中已經(jīng)自帶 word 的導(dǎo)出導(dǎo)出功能,其所使用的也是 easypoi,盡管所導(dǎo)出的 word 能滿足大部分需求,
但總是有需要用到自定義 word導(dǎo)出模板,下文所用到的皆是 easypoi 提供的,為方便下次翻閱,故記之。
?
2、代碼部分
2.1、controller
@RequestMapping("/ftl2word") public void velocity2word(JeecgDemoExcelEntity jeecgDemoExcel, HttpServletRequest request,HttpServletResponse response) throws IOException {try {jeecgDemoExcel = this.jeecgDemoExcelService.getEntity(JeecgDemoExcelEntity.class, jeecgDemoExcel.getId());List<Map<String, Object>> departs = this.systemService.findForJdbc("select id,departname from t_s_depart");String docFileName = "word-模板導(dǎo)出測試.doc";Map<String, Object> rootMap = new HashMap<String, Object>();rootMap.put("info", jeecgDemoExcel);rootMap.put("departs", departs);// FreemarkerUtil.createFile("exportMyExcel.xls",// docFileName,rootMap, request, response,// FreemarkerUtil.EXCEL_FILE);FreemarkerUtil.createFile("ftl2doc.ftl", docFileName, rootMap, request, response, FreemarkerUtil.WORD_FILE);} catch (Exception e) {e.printStackTrace();} }?
2.2、entity
實(shí)體就不扔出來了,詳細(xì)說一下這個地方:
jeecgDemoExcel = this.jeecgDemoExcelService.getEntity(JeecgDemoExcelEntity.class, jeecgDemoExcel.getId()); List<Map<String, Object>> departs = this.systemService.findForJdbc("select id,departname from t_s_depart"); String docFileName = "word-模板導(dǎo)出測試.doc"; Map<String, Object> rootMap = new HashMap<String, Object>(); rootMap.put("info", jeecgDemoExcel); rootMap.put("departs", departs);jeecgDemoExcel? 為 List<實(shí)體>,departs 為?List<Map<String, Object>>,怎么用?ftl 語法了解一下?
2.3、工具類?FreemarkerUtil?
public class FreemarkerUtil {private static final Object LOCK = new Object();/*** word文件*/public static final int WORD_FILE = 1;/*** excel文件*/public static final int EXCEL_FILE = 2;private static Configuration cfg;private static FreemarkerUtil ftl ;private FreemarkerUtil(String templateFolder) throws IOException {cfg = new Configuration();cfg.setDirectoryForTemplateLoading(new File(templateFolder));cfg.setObjectWrapper(new DefaultObjectWrapper());}private static void check(HttpServletRequest request) {if (ftl == null) {synchronized (LOCK) {try {ftl = new FreemarkerUtil(request.getServletContext().getRealPath("/")+"export/template");} catch (IOException e) {e.printStackTrace();}}}}/*** 創(chuàng)建 word 文檔* 必須先設(shè)置response導(dǎo)出配置,然后解析模版,否則會出問題* @throws IOException */public static void createFile(String templateName,String docFileName, Map<String,Object> rootMap,HttpServletRequest request, HttpServletResponse response,int fileType) throws IOException {// response.resetBuffer();//設(shè)置導(dǎo)出response.addHeader("Cache-Control","no-cache");response.setCharacterEncoding("UTF-8");if( WORD_FILE == fileType){response.setContentType("application/vnd.ms-word;charset=UTF-8");}else if(EXCEL_FILE == fileType){response.setContentType("application/octet-stream;charset=UTF-8");}else{response.setContentType("application/octet-stream");}String ua = request.getHeader("user-agent");ua = ua == null ? null : ua.toLowerCase();if(ua != null && (ua.indexOf("firefox") > 0 || ua.indexOf("safari")>0)){try {docFileName = new String(docFileName.getBytes(),"ISO8859-1");response.addHeader("Content-Disposition","attachment;filename=" + docFileName);} catch (Exception e) {}}else{try {docFileName = URLEncoder.encode(docFileName, "utf-8");response.addHeader("Content-Disposition","attachment;filename=" + docFileName);} catch (Exception e) {}}check(request);//解析模版Template temp = cfg.getTemplate(templateName, "UTF-8");PrintWriter write = response.getWriter();try {temp.process(rootMap, write);} catch (TemplateException e) {e.printStackTrace();}finally {if(write != null){write.flush();write.close();}}} }?
2.4、ftl 模板
https://files.cnblogs.com/files/niceyoo/ftl2doc.rar
至于,ftl 如何生成,以及如何寫,可自定查詢,后面也會單獨(dú)文章補(bǔ)充。
?
?博客地址:http://www.cnblogs.com/niceyoo
?
posted @ 2018-12-17 13:33 niceyoo 閱讀(...) 評論(...) 編輯 收藏總結(jié)
以上是生活随笔為你收集整理的8、jeecg 笔记之 自定义word 模板导出(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [linux命令技巧] mkdir -p
- 下一篇: 动态规划(冬令营课堂笔记)