• node.js提取excel中的信息填充到word文件,批量生成合同


    1.npm下载

    npm i pizzip docxtemplater xlsx

    2.excel模板

    3.word模板

    4.代码

    1. // 引入所需模块
    2. var PizZip = require('pizzip');
    3. var Docxtemplater = require('docxtemplater');
    4. var fs = require('fs');
    5. var path = require('path');
    6. var xl = require('xlsx');
    7. // 读取并导出Excel文件 ./en.xlsx
    8. var workbook = xl.readFile("./en.xlsx")
    9. const sheetNames = workbook.SheetNames; // 返回 ['sheet1', 'sheet2']
    10. // 根据表名获取对应某张表
    11. const worksheet = workbook.Sheets[sheetNames[0]]; // 获取第一张表
    12. var dataa = xl.utils.sheet_to_json(worksheet); // 将表转换为JSON对象数组
    13. // console.log(dataa);
    14. // 处理数据,创建一个新数组,其中包含具有中文名、中文描述和英文描述的对象
    15. let distdata = []
    16. for (let i = 0; i < dataa.length; i++) {
    17. const element = dataa[i];
    18. let obj = {
    19. name: element.__EMPTY,// 获取中文名
    20. chinese: element.__EMPTY_1,// 获取中文描述
    21. english: element.__EMPTY_2 // 获取英文描述
    22. }
    23. distdata.push(obj)
    24. }
    25. // console.log(distdata)
    26. // 读取word文件,以二进制文件形式保存
    27. var content = fs.readFileSync(path.resolve(__dirname, './a1.docx'), 'binary'); // 读取word文件
    28. // 遍历处理后的数据,为每个对象生成一个word文件
    29. for (let i = 0; i < distdata.length; i++) {
    30. // 创建一个新的PizZip对象
    31. var zip = new PizZip(content);
    32. var doc = new Docxtemplater(zip);
    33. // 获取当前遍历的对象
    34. let ele = distdata[i]
    35. // 设置填充数据
    36. doc.setData(
    37. {
    38. name: ele.name,
    39. chinese: ele.chinese,
    40. english: ele.english
    41. }
    42. );
    43. //渲染数据生成文档
    44. doc.render()
    45. // 将文档转换文nodejs能使用的buf
    46. var buf = doc.getZip().generate({ type: 'nodebuffer' });
    47. // 导出文档名字/类型
    48. fs.writeFileSync(path.resolve(__dirname, `./word/${distdata[i].name}.docx`), buf);
    49. }

    5.运行结果 node ./app.js

    6.全部内容 zip 包 看资源绑定

  • 相关阅读:
    287. 寻找重复数
    nvm管理node版本过程记录
    艾泊宇产品战略:技术型老板必须警惕的2个致命错误
    0818(034天 线程/进程05 线程锁)
    【百度翻译API接口调用-Python语言】
    从基础到高级应用,详解用Python实现容器化和微服务架构
    深入类加载机制
    docker 实战
    大模型与数据库:AI 时代的双向助推力
    5G 时代来了;还不赶紧学习音视频?
  • 原文地址:https://blog.csdn.net/weixin_64374806/article/details/136324267