docx 範本內的佔位符未替換
P粉436410586
P粉436410586 2024-03-30 09:15:01
0
1
335

我正在使用這個庫將一些佔位符替換為 docx 模板並產生多個文件。我在前端使用中性諾和 vue,並且建立了一個方法,將選定的 docx 檔案和資料傳遞到庫進行處理。我以這種方式使用了 for 迴圈

// putting all the desired data into a specific array
for(let i = 0; i < this.selectedData.length; i++){
  this.dataPlaceholders.push({
   key1: val1,
   key2: val2
  })
}
//call the library to get documents

for(let i; i < this.dataPlaceholders.length; i++){
 this.docxTemplate.process(template, this.dataPlaceholders[i])
}

要傳遞的資料是從兩個數字合併的,如果我控制台記錄它們,我可以看到所有 si 都就位。如文件所述,我使用方括號 {} 來設定佔位符,並且佔位符的名稱與 dataPlaceholders 中每個鍵的名稱相同大批。經過測試後,我注意到我能夠產生不同的文檔,但佔位符不會被替換,並且文檔中會有空白欄位。

我怎麼能修復它以使這個工作正確?

P粉436410586
P粉436410586

全部回覆(1)
P粉394812277

經過一番嘗試並閱讀了一些有關如何在循環內實現非同步呼叫的問題後,我選擇使用 Array.prototype.map 函數,並且它工作正常。我已經修改了將庫呼叫為非同步方法的 vue 方法,但我保留了 then 區塊,這樣我就能夠在庫完成處理後取得已處理的文件。 p>

this.dataPlaceholders.map( async (data, i) => {
  let filename = data.supplier + '.docx'
  this.docxTemplate.process(template, data).then( (result) => {
    // code to download files here
     let a = document.createElement('a')
     let downloadLink = URL.createObjectURL(result)
     a.href = downloadLink
     a.download = filename
     a.click()
  })
})

唯一需要解決的是如何在下載所有檔案後撤銷 blob url。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!