这里使用的是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,动态替换表格内容的更多相关文章

  1. python 操作excel实现替换特定内容

    本文介绍使用python语言,借助openyxl库来实现操作excel(xlsx)文件,实现替换特定内容的需求. 目前实现了3个小功能: 1. 全字匹配替换(mode1):(如:全字匹配 yocich ...

  2. js实现前端动态筛选表格内容

    代码参考: http://www.sharejs.com/codes/javascript/4289 http://www.jb51.net/article/103420.htm https://ww ...

  3. Excel:替换表格中的0值

    替换时需要勾选"单元格匹配",否则会把所有单元格中的0字符都给替换掉

  4. Word动态替换文本

    public class WordTest2 { public static void main(String[] args) { /** 此Map存放动态替换的内容,key-Word中定义的变量,v ...

  5. excel技巧--复制带excel侧边的表格

    假设要复制出带excel侧边的表格内容,则使用以下步骤: 1.选择要复制的表格: 2.选择“页面布局”->“标题”选项的“打印”打勾: 3.选择“开始”->复制旁的三角选项:复制为图片: ...

  6. 编辑表格输入内容、根据input输入框输入数字动态生成表格行数、编辑表格内容提交传给后台数据处理

    编辑表格输入内容.根据input输入框输入数字动态生成表格行数.编辑表格内容提交传给后台数据处理 记录自己学习做的东西,写的小demo,希望对大家也有帮助! 代码如下: <!DOCTYPE ht ...

  7. javascript生成表格增删改查 JavaScript动态改变表格单元格内容 动态生成表格 JS获取表格任意单元格 javascript如何动态删除表格某一行

    jsp页面表格布局Html代码 <body onload="show()"> <center> <input type="text" ...

  8. JavaWeb开发中采用FreeMarker生成Excel表格

            最近做了一个需求,要求导出一个采购合同的Excel表格,这个表格样式比较多.由于是合同,这个Excel表格里面有好多格式要求,比如结尾处签字那部分就有格式要求.这里介绍种采用FreeM ...

  9. 使用node.js生成excel报表下载(excel-export express篇)

    引言:日常工作中已经有许多应用功能块使用了nodejs作为web服务器,而生成报表下载也是我们在传统应用. java中提供了2套类库实现(jxl 和POI),.NET 作为微软的亲儿子更加不用说,各种 ...

随机推荐

  1. D. Salary Changing(找中位数)

    题:https://codeforces.com/contest/1251/problem/D 题意:给你n个单位需要满足达到的区间,再给个s,s是要分配给n的单位的量,当然∑l<=s,问经过分 ...

  2. 76)PHP,session数据区的使用

    (1)session数据区: 在我们的session会话结束之前,会有一个seeeion的文件,存储着session序列化的数据,在会话没有结束之前,我们都是操作$_SESSION的,但是在会话结束后 ...

  3. xpath-helper 插件下载

    链接:https://pan.baidu.com/s/1YuTGrdwwAKQd2sIcuarBHQ 提取码:qb8p

  4. mysql 数据库 创建用户和授权

    创建用户和密码 CREATE USER '用户名'@'%' IDENTIFIED BY '密码'; 创建几个数据库 例如 db1,db2 用户授权访问指定的数据库 grant all privileg ...

  5. web前端知识day01_HTML

    一.HTML入门案例(静夜思) 1.概述 HTML:Hyper Text Markup Language 超文本标记语言超文本:比普通文本功能强大,能实现不同样式(比如加粗,居中,斜体)标记语言:使用 ...

  6. [LC] 150. Evaluate Reverse Polish Notation

    Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are +, -, ...

  7. [LC] 104. Maximum Depth of Binary Tree

    Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the long ...

  8. Web窗体--控件

    服务器基本控件:button: text属性linkbutton:text属性,它是一个超链接模样的普通buttonhyperlink: navigateurl:链接地址,相当于<a>标签 ...

  9. 项目搭建到Linux--实用笔记

    项目搭建到Linux--实用笔记 1.启动redis 目录  /usr/local/redis/bin    (我自己的目录)             启动 ./redis-server redis. ...

  10. Matplotlib简单回顾

    import numpy as np from pylab import * from matplotlib import pyplot as plt x = [1, 2, 3, 4] y = [3, ...