node生成excel,动态替换表格内容
这里使用的是exceljs模块, 好上手,易操作
1. 大致使用步骤
npm install exceljs
// 引用
var Excel = require('exceljs');
// 创建一个workbook对象:
var workbook = new Excel.Workbook();
2. 创建一个新的excel,自己设计样式
例子:
function create () {
let info = [
{
identifier: '哈哈哈1',
name1: '桥1',
unit: '试试1',
price:
},
{
identifier: '哈哈2',
name1: '桥2',
unit: '试试2',
price:
}
]
//create a workbook
var workbook = new Excel.Workbook();
// add header 创建sheet
var ws1 = workbook.addWorksheet("测试一");
// 添加一行
ws1.addRow(['工程量汇总'])
// 合并单元格
ws1.mergeCells("A1: D1")
ws1.addRow(["识别","名字", '单位', '价钱']);
let row =
// 循环数据数组 将内容写入excel中
for (let a of info) {
row = row+
ws1.addRow([a.identifier, a.name1, a.unit, a.price])
}
ws1.addRows(info)
rowCenter(ws1, , row)
colWidth(ws1, [,,,,], )
//设置 start-end 行单元格水平垂直居中/添加边框
function rowCenter(arg_ws, arg_start, arg_end) {
for(i = arg_start; i <= arg_end; i++) {
arg_ws.findRow(i).alignment = {
vertical: 'middle', horizontal: 'center'
};
//循环 row 中的 cell,给每个 cell添加边框
arg_ws.findRow(i).eachCell(function (cell, index) {
cell.border = {
top: {style:'thin'},
left: {style:'thin'},
bottom: {style:'thin'},
right: {style:'thin'}
};
})
}
}
//设置 start-end 列的宽度
function colWidth(arg_ws, arg_cols, arg_width) {
for(i in arg_cols) {
arg_ws.getColumn(arg_cols[i]).width = arg_width;
}
}
workbook.xlsx.writeFile('./text.xlsx').then(() => {
console.log('生成excel完成')
})
}
3. 设计好excel模板, 替换excel中的内容
例一:
function replaceExcel () {
var workbook = new Excel.Workbook()
workbook.xlsx.readFile('./up/test.xlsx').then(function(){
// 定位需要修改的位置
workbook.model.sheets[].rows[].cells[].value = 'ss'
workbook.xlsx.writeFile('./a.xlsx').then(()=> {
console.log('重写完成')
})
})
}
例二:
function replaceExcel2 () {
var workbook = new Excel.Workbook()
workbook.xlsx.readFile('./up/test.xlsx').then(function(){
// let sheet = workbook.getWorksheet(1)
// 遍历每一个sheet
workbook.eachSheet(function(sheet, sheetId) {
// 遍历每一列
sheet.eachRow((row, rowNumber) => {
// 取出每个单元格
row.eachCell((cell, colNumber) => {
// 进行判断单元格内容
if (cell.value == '地面') {
// 替换内容
cell.value = '测试'
} else if (cell.value == '动物') {
cell.value = '测试ssss'
}
})
})
})
workbook.xlsx.writeFile('./b.xlsx').then(() => {
console.log('重写')
})
})
}
4. 以上都是保存文件在本地,可以使用流的形式直接返回给前端
const express = require('express')
const app = express()
const Excel = require('exceljs')
app.get('/demo', (req, res) => {
//create a workbook
var workbook = new Excel.Workbook();
//add header
var ws1 = workbook.addWorksheet("测试一");
ws1.addRow(['工程量汇总'])
ws1.mergeCells("A1: D1")
ws1.addRow(["识别","名字", '单位', '价钱']);
workbook.xlsx.write(res)
})
app.listen()
node生成excel,动态替换表格内容的更多相关文章
- python 操作excel实现替换特定内容
本文介绍使用python语言,借助openyxl库来实现操作excel(xlsx)文件,实现替换特定内容的需求. 目前实现了3个小功能: 1. 全字匹配替换(mode1):(如:全字匹配 yocich ...
- js实现前端动态筛选表格内容
代码参考: http://www.sharejs.com/codes/javascript/4289 http://www.jb51.net/article/103420.htm https://ww ...
- Excel:替换表格中的0值
替换时需要勾选"单元格匹配",否则会把所有单元格中的0字符都给替换掉
- Word动态替换文本
public class WordTest2 { public static void main(String[] args) { /** 此Map存放动态替换的内容,key-Word中定义的变量,v ...
- excel技巧--复制带excel侧边的表格
假设要复制出带excel侧边的表格内容,则使用以下步骤: 1.选择要复制的表格: 2.选择“页面布局”->“标题”选项的“打印”打勾: 3.选择“开始”->复制旁的三角选项:复制为图片: ...
- 编辑表格输入内容、根据input输入框输入数字动态生成表格行数、编辑表格内容提交传给后台数据处理
编辑表格输入内容.根据input输入框输入数字动态生成表格行数.编辑表格内容提交传给后台数据处理 记录自己学习做的东西,写的小demo,希望对大家也有帮助! 代码如下: <!DOCTYPE ht ...
- javascript生成表格增删改查 JavaScript动态改变表格单元格内容 动态生成表格 JS获取表格任意单元格 javascript如何动态删除表格某一行
jsp页面表格布局Html代码 <body onload="show()"> <center> <input type="text" ...
- JavaWeb开发中采用FreeMarker生成Excel表格
最近做了一个需求,要求导出一个采购合同的Excel表格,这个表格样式比较多.由于是合同,这个Excel表格里面有好多格式要求,比如结尾处签字那部分就有格式要求.这里介绍种采用FreeM ...
- 使用node.js生成excel报表下载(excel-export express篇)
引言:日常工作中已经有许多应用功能块使用了nodejs作为web服务器,而生成报表下载也是我们在传统应用. java中提供了2套类库实现(jxl 和POI),.NET 作为微软的亲儿子更加不用说,各种 ...
随机推荐
- CSS样式表-------第二章:选择器
二 .选择器 内嵌.外部样式表的一般语法: 选择器 { 样式=值: 样式=值: 样式=值: ...... } 以下面html为例,了解区分一下各种样式的选择器 <head> <met ...
- linux系统用户管理(二)
5.组命令管理**组账户信息保存在/etc/group和/etc/gshadow两个文件中 /etc/group 组账户信息 [root@localhost ~]# head -2 /etc/grou ...
- appium自动化的工作原理(1)
用appium开发移动端自动化测试脚本这么长时间,还没有认证的了解下它的原理是什么,到底是如何实现的呢? 1.先看一个Appium加载的过程图解(来自:了解appium自动化的工作原理--https: ...
- Nearby Bicycles
With fast developments of information and communication technology, many cities today have establish ...
- [LC] 121. Best Time to Buy and Sell Stock
Say you have an array for which the ith element is the price of a given stock on day i. If you were ...
- python3多线程应用详解(第二卷:多线程到底是怎么工作的)
现在很多人都说用多线程工作快是因为多个不同任务可以同时执行,注意我说的是不同任务,要是重复做一件事达到相同效果就是画蛇添足了,其实这是个错误的说法,线程真正的本质是无法同时执行的.现在我们来看下多线程 ...
- linux一些基本操作-防火墙操作
防火墙操作 一.service方式 查看防火墙状态: [root@centos6 ~]# service iptables status iptables:未运行防火墙. 开启防火墙: [root@c ...
- [LC] 62. Unique Paths
A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...
- java 内存溢出-与gc
感谢原作者 在日常中我们经常遇到这样的错误:java.lang.OutOfMemoryError: Java heap space. 但是除了heap space 的OutOfMemoryError, ...
- 新特DEV1光速发布背后:原来“开公司”也能风驰电掣
去年12月16日,总融资额达到200亿元的蔚来汽车正式推出电动SUV车型ES8:去年12月22日,威马汽车宣布最新一轮融资,累计获得120亿元的融资额:今年1月29日,小鹏汽车宣布启动总额为22亿元人 ...