这里使用的是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. macbook安装LightGBM

    一开始直接用pip install lightgbm 报错: OSError: dlopen(/opt/anaconda3/lib/python3.7/site-packages/lightgbm/l ...

  2. StartDT AI Lab | 视觉智能引擎+数据决策引擎——打造商业“智能沙盘”

    众所周知,线上商家可以通过淘宝平台的大量前端“埋点”轻松获取商品的加购率.收藏率.转化率.成交额等大量基础信息,甚至商家能够在更精细的层面,获取商品关键字变化或者上新/爆款带来的流量变化数据,更甚者商 ...

  3. mysql数据库-基础--长期维护

    ###############    数据库    ############## 主要是通过这个学习到什么? 1,库的操作 2,表的操作,包括查询,多表查询,子查询 3,视图,事务,索引,锁, ### ...

  4. understanding android build layer · Dylan

    build / android 先看看Android官方的解释 Understand Build Layers The build hierarchy includes the abstraction ...

  5. _Random和_RandomString的使用区别

    __Random 函数介绍 作用:生成随机数 使用格式:${__Random(5,30,myResult_Random)},其中 第一个参数5,表示希望生成的数字最小的值,必填 第二个参数30,表示希 ...

  6. 实现一个简易的HashMap

    实现一个键的类型为int,值的类型为int的HashMap 输入一个T,表示操作次数: 之后每行接一个操作,可以包括插入.删除.修改.查询.清空.判断是否有这个键: 因为是刚学完随手敲的,所以功能粗糙 ...

  7. SpringMVC学习笔记九:拦截器及拦截器的简单实用

    SpringMVC中的interceptor拦截器是非常重要的,它的主要作用就是拦截指定的用户请求,并进行相应的预处理和后处理. 拦截时间点在"处理器映射器根据用户提交的请求映射出所要执行的 ...

  8. 喜欢B站的用户为何认同感超强?

    前几天视频弹幕网站哔哩哔哩(以下简称"B站"),正式登陆纳斯达克,股票代码"BILI".当日其CEOC兼董事长陈睿在B站的账号上传了上市视频. 打开视频,满眼& ...

  9. Java 原子类 java.util.concurrent.atomic

    Java 原子类 java.util.concurrent.atomic 1.i++为什么是非线程安全的 i++其实是分为3个步骤:获取i的值, 把i+1, 把i+1的结果赋给i 如果多线程执行i++ ...

  10. js javascript 获取url,获得当前页面的url,静态html文件js读取url参数

    获得当前页面的url window.location.href 静态html文件js读取url参数 location.search; //获取url中"?"符后的字串 下边为转载的 ...