这里使用的是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. 吴裕雄--天生自然 JAVA开发学习:文档注释

    /*** 这个类绘制一个条形图 * @author runoob * @version 1.2 */ import java.io.*; /** * 这个类演示了文档注释 * @author Ayan ...

  2. 常见字体图标库——font-awesome

    1.简介 FontAwesome一种带有网页功能的象形文字语言,并收集在一个集合里.字库中有675个图标,只支持英文搜索,中文地址:http://www.fontawesome.com.cn/ 2.使 ...

  3. 【SpringCloud】Eureka入门与原理

    为了开发效率高效和业务逻辑清晰,越来越多的项目采用分布式系统.分布式最重要的就是注册中心了.Eureka是SpringCloud原生提供的注册中心,来look一波吧. 超光速入门 服务端 引入依赖: ...

  4. [LC] 572. Subtree of Another Tree

    Given two non-empty binary trees s and t, check whether tree t has exactly the same structure and no ...

  5. 吴裕雄--天生自然python学习笔记:python处理word文档

    Office 文件是我们日常工作生活中都经常用到的文件格 式,其中以 Word 格式的文件最为常用 . Python 可通过 Win32com 纽件对 Micro so位 Office 文件 进行存取 ...

  6. python库之——sklearn

    机器学习库sklearn 官方documentation(资料)中分为不同的部分: 其中我们主要讲User Guide(机器学习算法理论介绍).API(程序实现方法): 一.User Guide ht ...

  7. 前端-bootstrap-长期维护

     ###############    bootstrap简介     ################ Bootstrap是Twitter开源的基于HTML.CSS.JavaScript的前端框架. ...

  8. SCI|EI|ISTP|万方|istic|NSTL|CASTD|CNKI|nlc|ethesys|CALIS|CETD|proquest|NDLTD|中国科学院学位论文检索系统|学位论文

    BD AC D 三大检索指的是:SCI(科学引文索引 ).EI(工程索引 ).ISTP(科技会议录索引 ) 即Science Citation Index.Engineering Index.Conf ...

  9. 使用httpclient必须知道的参数设置及代码写法、存在的风险

    转发地址:http://jinnianshilongnian.iteye.com/blog/2089792 结论: 如果使用httpclient 3.1并发量比较大的项目,最好升级到httpclien ...

  10. jmeter常用定时器以及事物控制器

    定时器(并发):Synchronizing Timer 事物控制器: 勾选Generate parent sample当单看主要数据和页面数据性能测试结果还是有比较大的差异的,因而在进行页面性能测试的 ...