exportWordDocx.js
import JSZipUtils from “jszip-utils”
import Docxtemplater from “docxtemplater”
import {saveAs} from “file-saver”
import PizZip from “pizzip”
const exportWordDocx = (demoUrl, docxData, fileName) => {// 讀取并獲得模板文件的二進制內容JSZipUtils.getBinaryContent(demoUrl,function (error, content) {// 拋出異常if (error) {throw error}// 創建一個PizZip實例,內容為模板的內容let zip = new PizZip(content)// 創建并加載docxtemplater實例對象let doc = new Docxtemplater(zip, {linebreaks: true,nullGetter: function () {return ""}})doc.setData({...docxData,})try {// 用模板變量的值替換所有模板變量doc.render()} catch (error) {// 拋出異常let e = {message: error.message,name: error.name,stack: error.stack,properties: error.properties,}// console.log(JSON.stringify({error: e}))throw error}// 生成一個代表docxtemplater對象的zip文件(不是一個真實的文件,而是在內存中的表示)let out = doc.getZip().generate({type: "blob",mimeType:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",})// 將目標文件對象保存為目標類型的文件,并命名saveAs(out, fileName)})
}
export default exportWordDocx
使用:
import exportWordDocx from “…/exportWordDocx”
exportWordDocx(baseUrl + “doc/template2.docx”,{
a:‘要替換的字段’.b:‘要替換的字段2’}, ‘文件名稱.doc’)
模板文件template2.docx:
{a}{b}