• 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 包 看资源绑定

  • 相关阅读:
    第十二届2023软件杯国家二等奖赛后感想&总结
    C/C++指针
    【uniapp小程序】uploadFile文件上传
    iOS-前半周【Zara】iOStableView And iOS无线轮播视图
    【LeetCode热题100】--136.只出现一次的数字
    IDEA Mac 快捷键
    防止消息丢失与消息重复——Kafka可靠性分析及优化实践
    kodi的IPTV直播源爬取
    word出现乱码怎么转换正常?
    Linux CentOS7 vim临时文件
  • 原文地址:https://blog.csdn.net/weixin_64374806/article/details/136324267