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 = {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`
}
},
