前端docx-templates生成word文档
说明
docx-templates项目地址:https://github.com/guigrpa/docx-templates
原文:https://juejin.cn/post/7170695319004315679?searchId=202312171247306E0B93A485DAE6B4E304
这个库能干啥?
这个库能做的:
- 替换Word模板中的文字
- 实现FOR和IF操作
- 在文档指定位置插入图片
- 在模板里写JavaScript代码(!)
- 在文档指定位置插入HTML,并让word尝试转换
不能做的:
- 程从头开始编写文档;你需要先有一个模板
- 模板,即一个主模板里嵌套了子模板
安装
npm install docx-templates
或
yarn add docx-templates
Node用法
package.json中添加"type": "module"
在index.js中添加如下内容
import {createReport} from 'docx-templates';
import fs from 'fs';
const template = fs.readFileSync('template.docx');
const buffer = await createReport({
template,
data: {
title: "Test",
data: [
{ name: "李龙", age: 15, grade: 85,img:fs.readFileSync("./src/1.jpg")},
{ name: "张三", age: 20, grade: 95,img:fs.readFileSync("./src/1.jpg") },
{ name: "张伟", age: 25, grade: 45,img:fs.readFileSync("./src/1.jpg") },
{ name: "王武", age: 20, grade: 65,img:fs.readFileSync("./src/1.jpg") },
],
},
additionalJsContext: {
// width height: cm
injectImage: (base64, width, height) => {
return { width: width, height: height, data: base64, extension: ".png" };
},
},
cmdDelimiter: ["{{", "}}"],
});
fs.writeFileSync('report.docx', buffer)
这是template.docx模版
最后生成的样子