關於node通過officegen生成word使用(服務端)


1、首先安裝officegen

  cnpm install officegen --save

2、在controller層引入

  const officegen = require('officegen')

  const fs = require('fs')

3、在functron里使用officegen

  <--定義寫入文檔的數據和字體樣式-->

  //定義文檔的標題

  let tObj = docx.createP({ align: 'center' });    //居中

 

   tObj.addText(title, { bold: true, font_face: 'Arial', font_size: 18 });   // 標題樣式  

 

   tObj.addLineBreak()     //換行

  //定義內容

  let pObj = docx.createP()

  pObj.addText('辦案進展:', {  font_size: 14, font_face: '方正仿宋簡體' })

       pObj.addText(list.title, {  font_size: 14, font_face: '方正仿宋簡體' })

       pObj.addLineBreak()

  //如果寫入的是列表,直接循環就好

  //生成文檔,存放文檔的路徑要先創建好

  let out = await fs.createWriteStream(`public/process//文檔.docx`)

      out.on('error', function (err) {

        console.log(err + '111111111111111')

    })

    docx.generate(out)

4、將創建好的文檔返回給前端即可

  ctx.body = {     
    status: 1,
        url: `/process/文檔.docx`
      }
 
 5、整體代碼  
const officegen = require('officegen')
const fs = require('fs')


getProcessListWord: async (ctx, next) => {
    //省略獲取數據步驟
    let docx = officegen('docx')

    docx.on('finalize', function (written) {
      console.log(
        'Finish to create a Microsoft Word document.'
      )
    })

    docx.on('error', function (err) {
      console.log(err)
    })
    
    //寫入world文檔

    const title = caseInfo.client_name + caseInfo.cause
    let tObj = docx.createP({ align: 'center' });
    tObj.addText(title, { bold: true, font_face: 'Arial', font_size: 18 });
    tObj.addLineBreak()
    tObj.addLineBreak()
    let pObj = docx.createP()
    for (let i = 0; i < list.length; i++) {
      pObj.addText('字段名稱:', {  font_size: 14, font_face: '方正仿宋簡體' })
      pObj.addText(list[i].title, {  font_size: 14, font_face: '方正仿宋簡體' })

    }

    const now = UTIL.moment(Date.now()).format('YYYY-MM-DD_HH_mm_ss');   //定義一個時間
    await File.mkdir(`public/process`);
    // Async call to generate the output file:
    let out = await fs.createWriteStream(`public/process/文檔_${now}.docx`)

    out.on('error', function (err) {
      console.log(err + '111111111111111')
    })
    docx.generate(out)
    ctx.body = {
      status: 1,
      url: `/process/文檔_${now}.docx`
    }

  },
        
    

 

 

 

  

 

 

 

  

  

 

 
 
       


免責聲明!

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



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