纯前端实现Excel模板文件数据填充

exceljs-xlsx-template

基于 exceljs 库的 .xlsx 模板文件填充引擎。

  • 单标签占位符格式:{{xxx}}
  • 迭代标签占位符格式:{{xxx.xxx}}

安装:
npm install exceljs-xlsx-template

项目地址:
PS:如果对你有帮助的话,点个Star支持下哈~

  • Github
  • Gitee

示例(详见test目录下的test.js和test.html):

const path = require("path");
const fs = require("fs");
const { fillTemplate, loadWorkbook, saveWorkbook } = require("exceljs-xlsx-template");const input = path.join(__dirname, "assets", "template.xlsx");
const officialseal = path.join(__dirname, "assets", "officialseal.png");
const data = [{name: "John",items: [{ no: "No.1", name: "JavaScript" },{ no: "No.2", name: "CSS" },{ no: "No.3", name: "HTML" },{ no: "No.4", name: "Node.js" },{ no: "No.5", name: "Three.js" },{ no: "No.6", name: "Vue" },{ no: "No.7", name: "React" },{ no: "No.8", name: "Angular" },{ no: "No.9", name: "UniApp" },],projects: [{ name: "Project 1", description: "Description 1" },{ name: "Project 2", description: "Description 2" },{ name: "Project 3", description: "Description 3" },],},
];async function main() {// 方式一:本地文件// const workbook = await loadWorkbook(input);// 方式二:从文件读取二进制数据到缓冲区const buffer = fs.readFileSync(input);const workbook = await loadWorkbook(buffer);// 填充模板await fillTemplate(workbook, data);// 添加图片印章const imageId = workbook.addImage({filename: officialseal,extension: "png",});workbook.eachSheet((worksheet, sheetId) => {// 第1张sheet表添加印章if (sheetId === 1) {// 获取表格的最后一行最后一列const lastRow = worksheet.lastRow;const lastColumn = worksheet.lastColumn;// 插入图片到表格中worksheet.addImage(imageId, {// 左上角位置tl: { col: lastColumn.number / 2, row: lastRow.number - 8 },ext: { width: 200, height: 200 },});}});// 保存为新的 Excel 文件const output = path.join(__dirname, "output", `${Date.now()}.xlsx`);await saveWorkbook(workbook, output);return output;
}main().then((res) => {console.log("🚀 ~ file:", res);}).catch((error) => {console.error("Error processing Excel file:", error);});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/893279.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小区楼道电动车监控识别预警系统

楼道电动车监控识别预警系统采用机器视觉图像感知技术,通过人工智能机器深度学习能力,对自行车、电动车和摩托车精确检测、跟踪、识别,实现对非机动车检测分析识别,在机器视觉图像景中,通过非机动车识别算法建立图像模型,完成自动检测识别非机动车,并能以视觉图像智能分…

供应链管理必须要掌握的10个常用指标及计算公式详解!

供应链管理对于很多公司来说,可能是一个看不见摸不着的“幕后英雄”。但是,掌握了核心的供应链管理指标,你就能把这些“幕后工作”做到位,提升公司整体运营效率,减少成本,甚至提高客户满意度。 今天我们就来聊聊,供应链管理中最重要的10个常用指标和它们的计算公式。如果…

分享 5 个在微信中使用 DeepSeek 的方法,建议收藏!

前言 今天大姚将为大家分享5种在微信中使用DeepSeek的方法,帮助大家更好地利用这一工具,提升工作和学习效率。无论是处理文档、管理知识,还是进行深度搜索和思考,这些方法都将为你带来全新的体验。让我们一起探索DeepSeek在微信中的无限可能吧!公众号「追逐时光者」回复关…

用python制作太阳花

点击查看代码 from turtle import * color(red,yellow) begin_fill() while True:forward(200)left(170)if abs(pos())<1:break end_fill() done()

使用Acronis True Image恢复系统

在U深度PE环境中,使用Acronis True Image恢复系统。只要平常时,做好服务器或是工作端的系统备份,遇上系统崩溃或是某种原因,需要恢复时,可以参考下面方法来恢复。准备好备份xxx.tib....U深度U盘启动,进入维护环境,运行傲梅开区助手(1),查看硬盘分区情部分,如磁盘1,未…

15.7.2 微调BERT的数据集

在我们已经训练好BERT后,BERT就可以对输入的每一个词元返回抽取了上下文信息的特征向量(也就是对于任意一个词元,将这个词元当做查询,所有词元当做键值对) 一些任务如下这里将<cls>的特征向量传递给全连接层的原因就是因为<cls>本来就是用来分类的,所以肯定传…

【分享】FTP为何被摒弃,如何选择适配的国产FTP传输软件?

在数字化浪潮中,文件传输是日常工作里不可或缺的一环。提及文件传输,FTP(文件传输协议)大家都不陌生,它就像一位勤勤恳恳的老邮差,多年来一直承担着文件传输的重任。凭借着简单易用、广泛支持、兼容性好以及成本低廉的优点,FTP在全球各地广泛应用,成为许多企业和个人进…

实验1作业

四、运行结果分析 1.task 1: 代码1(1个字符小人):#include <stdio.h> int main(){printf(" O \n");printf("\n");printf("I I\n"); return 0; } 运行结果截图: 代码2(两个竖着的小人): #include <stdio.h> int main(){prin…

DeepSeek 开源周回顾「GitHub 热点速览」

上周,DeepSeek 发布的开源项目用一个词形容就是:榨干性能!由于篇幅有限,这里仅列出项目名称和简介,感兴趣的同学可以前往 DeepSeek 的开源组织页面,深入探索每个项目的精彩之处!第一天 FlashMLA:基于 Hopper GPU 的高效 MLA 解码内核 第二天 DeepEP:专为 MoE 和 EP 设…

20250304

1. 烧碱 回调2800左右 波段多

怎样配置blazor才能提高吞吐量

怎样配置blazor才能提高吞吐量 为了提高 Blazor 应用的吞吐量,可以从以下几个方面进行配置和优化:启用响应压缩:通过压缩传输的数据量来减少带宽消耗。 配置 SignalR:调整 SignalR 的配置以提高数据传输效率。 优化 Circuit 选项:调整 Blazor Server 的 Circuit 配置以提高…