node生成excel,动态替换表格内容

Posted liangyy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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: 13
     },
     {
       identifier: 哈哈2,
       name1: 桥2,
       unit: 试试2,
       price: 132
     }
   ]
   //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 = 2
   // 循环数据数组  将内容写入excel中
   for (let a of info) {
     row = row+1
     ws1.addRow([a.identifier, a.name1, a.unit, a.price])
   }
   ws1.addRows(info)
        
   rowCenter(ws1, 1, row)
   colWidth(ws1, [1,2,3,4,5], 20)
      
   //设置 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[
0].rows[0].cells[0].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(3000)

 











以上是关于node生成excel,动态替换表格内容的主要内容,如果未能解决你的问题,请参考以下文章

Delphi中如何对StringGrid表格中内容进行修改?

前端实现生成带有样式的excel表格 Node和浏览器读写Excel文件探究实践

前端实现生成带有样式的excel表格 Node和浏览器读写Excel文件探究实践

python实现Excel邮件合并

从服务端生成Excel电子表格(GcExcel + SpreadJS)

只用js如何实现表格内容的动态修改?