1. 程式人生 > >java利用Freemarker模板生成格式友好的doc文件(這種方式不支援docx)

java利用Freemarker模板生成格式友好的doc文件(這種方式不支援docx)

近期做專案需要生成複雜的帶格式的word文件,選擇過poi和itext來寫文件,發現文件生成沒問題,但是格式不好調,後來就想要利用freemarker模板來生成,效果還可以,今天就貼出來。
主要分為以下幾步

  1. 整理一份排版友好的word文件
    如:
    這裡寫圖片描述
    這裡寫圖片描述
  2. 修改word裡面需要填充的文字或圖片
    利用$符號把要填充的內容換成具體的變數佔位符
    不要直接在word文件裡寫佔位符,可以在編輯器裡寫完成後再複製到word裡,這樣不會出現佔位符在文件生成ftl模板後被分隔開的問題。
    這裡寫圖片描述
  3. 把修改後的word文件另存為xml
    這裡寫圖片描述
  4. 把生成的xml檔案字尾名修改為ftl
    這裡寫圖片描述
  5. 修改ftl模板裡的變數佔位符
    1、修改圖片的basecode64碼替換成具體的變數佔位符。
    這裡寫圖片描述

    說明:這裡要注意修改以下兩個屬性,如果不修改會導致圖片只顯示第一張圖片
<w:binData w:name="${"wordml://0300000"+warn_img_index+1+".png"}" xml:space="preserve">

<v:imagedata src="${"wordml://0300000"+warn_img_index+1+".png"}" o:title="svg_data_container_common_lkhs"/>

2、修改文字顯示的變數站位符號
普通的List<String>迴圈
這裡寫圖片描述
這裡寫圖片描述
List<Map>迴圈
這裡寫圖片描述


這裡寫圖片描述
6. 填充資料
這裡寫圖片描述
這裡寫圖片描述

        String file_path = "D:/export";
        String file_name = System.currentTimeMillis()+"_freemarker_word.doc";
        //載入freemarker模板
        FreemarkerWordUtils.createWord(data_map,"wordtemplates.ftl",file_path,file_name);
    /**
     * 把圖片轉換成basecode64碼
     * @param path
     * @return
*/
public static String getPic_base64code(String path){ String img = null; InputStream in; byte[] picdata = null; try { in = new FileInputStream(path); picdata = new byte[in.available()]; in.read(picdata); in.close(); } catch (Exception e) { e.printStackTrace(); } BASE64Encoder encoder = new BASE64Encoder(); img = encoder.encode(picdata); return img; }

最終生成的文件如下:
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

相關推薦

java利用Freemarker模板生成格式友好doc(這種方式支援docx)

近期做專案需要生成複雜的帶格式的word文件,選擇過poi和itext來寫文件,發現文件生成沒問題,但是格式不好調,後來就想要利用freemarker模板來生成,效果還可以,今天就貼出來。 主要分為

java利用Freemarker模板生成docx格式的word

之前寫過一篇利用Freemarker模板生成doc的部落格,不過那個部落格有點缺陷,生成的word佔用的空間很大,幾百頁的word有將近100M了。所以,後面需求必須是生成的docx文件,結果匯出後正常才幾M,昨天花了一天的時間實現。 具體思路 1.把docx文件修改為ZIP格式(修改

利用Ldoc生成lua的doc

如果下面操作出現無法執行lua程式碼的,需要先安裝lua。詳見下文第四點。 一、安裝LuaRocks # cd luarocks本地磁碟目錄 # 例如 cd /Users/zengbinsi/workspace/babybus/ldoc/env

根據xlsx模板生成excel數據發送郵件代碼

order comment hssf emp value ade 新的 see util package mail; import java.io.File; import java.io.FileInputStream; import java.io.FileNotF

Java小技巧自動生成註釋、api

cmd 命令 javadoc的使用 win+R彈出執行視窗 輸入cmd回車,進入dos介面,輸入java -version,檢查java是否配置好。如下圖所示 配置好java後,我們新建一個含有公共類的java檔案,在裡面寫點東西。 然後儲存到資料夾test裡面

springboot+freemarker實現生成資料庫設計Word

      以前在專案完成後都會按照要求寫資料庫設計文件,表少的時候還無所謂,當有上百張表的時候就不好寫了。當然也有一些自動化軟體可以幫我們實現這個功能,但是自定義的程度比較低。所以今天自己來實現這個功能,可以按照自己的喜好定義樣式和模板,是不是很酷。 首先新建一個Word

php根據word模板生成新的word

sso roc 信息 使用 docs offic value 文件 安裝 原文地址:http://www.niu12.com/article/16 php使用phpword將word內容變量替換 a.安裝phpword composer require phpoffice

Maven學習總結(43)——利用javadoc外掛生成專案的API

在進行Java學習的時候,相信大家都看過線上或者下載的java api文件,可能是html格式或者chm格式的,其實這些參考文件也是很容易生成的,這裡介紹一個maven的外掛來實現專案程式碼文件的生成。

Java根據Word模板生成WordFreemarker實現)

public class WordExportUtil { private static Configuration configuration; static { configuration = new Configuration(); configur

Java利用Freemarker模板引擎實現程式碼生成器,提高效率

https://blog.csdn.net/huangwenyi1010/article/details/71249258  java模板引擎freemarker程式碼生成器 更多 個人分類: 一步一

JAVA利用FreeMarker生成(匯出)Word

一、首先下載相對應的jar包:freemarker.jar; 而我的專案環境是:maven 在pom.xml中: <dependency> <groupId>freemarker</groupId> <artifactId>f

JAVA通過模板生成DOC

將word文件另存為xml檔案 接下來,上面寫的拼音就起到作用了. 開啟xml檔案.搜尋 要替換的內容. 改為 ${內容} 改完後,把檔案的字尾名直接改成ftl。 程式碼: package com.hentor.apps.bestsign.util; i

Aspose.words Java基於模板生成word之純本內容

style loader bool depend name println 以及 test pre 一,創建word模板 1.新建一個word文檔 2.分別給四個參數設置域 (1)將鼠標置於想要設置域的地方 (2)設置域名 (3)設置好之後如下圖所示 二,項目 1,

使用freemarker模板生成Word和HTML

注:該文件是參考某個大佬的資料,根據自己的需要修改的,具體是哪位大佬的忘了,如果作者自己看到需要加明出處的,請留言你的部落格地址 業務處理: 1,在業務中建立List<Map<String, Object>> data = new ArrayList<Map<Strin

使用java將html原始碼(拼裝、可獲取頁面原始碼)轉換成為("html頁面",“doc檔案”,“pdf格式”),,doc檔案轉換成為pdf,,檔案的刪除、壓縮...

目錄: 1、轉換成為html頁面 2、html原始碼轉換成為doc檔案 3、html原始碼轉換成為pdf檔案 4、壓縮多個檔案成為一個zip檔案

使用freemarker模板生成word

專案中最近用到這個東西,做下記錄。 如下圖,先準備好一個(office2003)word文件當做模板。文件中圖片、姓名、性別和生日已經使用佔位符代替,生成過程中將會根據實際情況進行替換。 然後將word文件另存為“Word XML文件” 使用xml編輯器開啟test.xml,

Java 實現後臺生成doc

最近公司需要後臺報告自動生成,就查了一些實現方式。 最初想生成PDF報告,Freemark + Itext + flying saucer 可以實現,但是生成的PDF文件,後續不易修改。 就改為生成word文件,找到了java兩種實現方式 1.freemark  2. p

freemarker模板生成word檔案

1、用word文件製作好模板 ceshi.docx 2、將ceshi.docx檔案另存為ceshi.xml檔案 ${name}、${tel}、${address}被拆分了,用notpad++開啟ceshi.xml檔案,將被拆分的資料重新修改,修改完以後將檔案另存為ftl

Java利用mpxj解析mpp格式檔案

1、mpp檔案介紹 MPP是Microsoft Project專案管理軟體的副檔名,此軟體旨在幫助個人跟蹤,組織或維護專案。 2、mpp顯示效果 3、mpp結構說明 通過上圖可以看出,檔案主體內容就是一條一條的記錄,記錄內容包括:任務ID、任務名、Dur

java使用freemarker模板匯出word(帶有合併單元格)

前言:最近要做一個匯出word功能,其實網上有很多的例子,但是我需要的是合併單元格的,可是查了好久都沒有自己想要的。研究了幾天其實挺簡單的,在這兒我就簡單的介紹一下吧!(此方法只是一種思路,借鑑者還有根據需求來具體寫程式碼) 一、準備工作 1、jar包:freemarker