zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    利用itextsharp.dll 导出pdf格式文件
    Oracle 连接失去联系、链接空闲例程
    Log4net用法
    oracle 用户锁定(ORA28000:the account is locked)的解锁方法:
    智能提示框设计 仿携程
    利用System.Net.Mail 的SmtpClient发送邮件
    CTE实现嵌套递归
    读入excel中的数据到数据库中
    项目发布遇见的问题的整理
    JavaScript substring() 方法
  • 原文地址:https://www.cnblogs.com/liangyy/p/10322640.html
Copyright © 2011-2022 走看看