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

  • 相关阅读:
    Python学习第九篇:zipfile 库操作压缩包
    【JVM】垃圾收集算法
    如何在不牺牲质量的情况下降低采购成本?
    神经网络(二)回归与线性模型
    【Linux】Linux操作系统
    【Linux】之shell入门
    关于面试-java面试题汇总
    2019-10《信息资源管理 02378》真卷(独家文字版),圈定章节考点+统计真题分布
    9 个 yyds 的 Java 项目,可应对各种私活
    DXF笔记:根据法向量,求出位置矩阵或坐标系
  • 原文地址:https://blog.csdn.net/weixin_64374806/article/details/136324267