vue 導出word


https://www.cnblogs.com/wuqilang/p/14085382.html

https://blog.csdn.net/weixin_43880497/article/details/106275823 

 yarn add docxtemplater@3.19.7 docxtemplater-image-module-free@1.1.1 file-saver@2.0.5 jszip@2.6.1 jszip-utils@^0.1.0 pizzip@3.0.6

import JSZipUtils from "jszip-utils"
import docxtemplater from "docxtemplater"
import {
  saveAs
} from 'file-saver'
import PizZip from 'pizzip'
const ImageModule = require('docxtemplater-image-module-free');

const {
  downWordPath
} = require('@/config')

 

 

 download() {
      let _this = this
      // 讀取並獲得模板文件的二進制內容
      JSZipUtils.getBinaryContent(downWordPath, function (error, content) {
        if (error) throw error // 拋出異常
        var opts = {}
        opts.centered = false;
        opts.getImage = function (tagValue, tagName) {
          return new Promise(function (resolve, reject) {
            JSZipUtils.getBinaryContent(tagValue, function (error, content) {
              if (error) {
                return reject(error)
              }
              return resolve(content)
            })
          })
        } 
        opts.getSize = function (img, tagValue, tagName) {
          // FOR FIXED SIZE IMAGE :
          return [50, 50];
        }
        var imageModule = new ImageModule(opts);

        let zip = new PizZip(content) // 創建一個JSZip實例,內容為模板的內容
        // let doc=new docxtemplater().loadZip(zip).compile() //沒有圖片的
        let doc = new docxtemplater().loadZip(zip).attachModule(imageModule)
          .compile(); // 創建並加載docxtemplater實例對象 帶有圖片的


        doc.resolveData(_this.downloadData).then(function (res) {
          console.log('ready', res)
          doc.render()
          var out = doc.getZip().generate({
            type: 'blob',
            mimeType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
          })
          //輸出文檔
          saveAs(out, _this.wordName)
        })

      })


    },

downWordPath 文件路徑

區分本地和生產環境

 

 

downData 下載數據

 

 

wordName 輸出路徑

 

 

解決默認勾選框的問題

{#registerNation}{checked}{name}{/registerNation}   registerNation是我自己在template.docx定義的變量 downloadData里面可以找的 。

{checked}全部選中 包括{}  字體選擇wingdings2 自動變為這樣  

另外千萬注意:registerNation單詞前后千萬不能手賤敲空格 。坑了好久自己

 

 

 

 

   至於上面的 必須在word復制。而 不要wps中復制 !!! 在word復制  前提這份對勾符號換成windings字體 然后再復制到代碼中 就出來了 。

 

也是如此操作

 

 解決圖片問題

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM