【问题标题】:How to delete an existing row of a worksheet in Excel by using XLSX in node js?如何在节点 js 中使用 XLSX 删除 Excel 中工作表的现有行?
【发布时间】:2021-03-27 05:06:32
【问题描述】:

如何使用 Node.js 中 SheetJS 中的 XLSX 在 Excel 中删除工作簿的现有工作表行?

目前的代码:

const xlsx = require('xlsx');

// read the file
workBook = xlsx.readFile("todo-list.xlsx", {cellDates:true});

// read the worksheet
const shoppingList = workBook.Sheets["Do-Shopping"];

// delete a specific row
........ [here I dont know even how to start]

// write the data to the Excel file
xlsx.writeFile(workBook, 'todo-list.xlsx');

期望的结果:

之前: 后:

但删除的行可以是任何人,例如第一行或第三行,不一定是最后一行。

我尝试搜索官方文档和堆栈,但我还没有找到答案。 :( 我是 Node js 的新手

你能帮帮我吗?

【问题讨论】:

    标签: javascript node.js excel xlsx sheetjs


    【解决方案1】:

    Github's site 上找到的答案,在任何行上都非常有效:

    // delete a specific row
    function ec(r, c){
        return xlsx.utils.encode_cell({r:r,c:c});
    }
    function delete_row(ws, row_index){
        var variable = xlsx.utils.decode_range(ws["!ref"])
        for(var R = row_index; R < variable.e.r; ++R){
            for(var C = variable.s.c; C <= variable.e.c; ++C){
                ws[ec(R,C)] = ws[ec(R+1,C)];
            }
        }
        variable.e.r--
        ws['!ref'] = xlsx.utils.encode_range(variable.s, variable.e);
    }
    delete_row(shoppingList, 1)
    

    【讨论】:

      【解决方案2】:
      //I tried this is not working.Please have a look.
      const XLSX = require('xlsx')
      var filename = './customer_data.xlsx'
      var workbook = XLSX.readFile(filename)
      var worksheet = workbook.Sheets[workbook.SheetNames[0]]
      
      function ec(r, c) {
          return XLSX.utils.encode_cell({ r: r, c: c });
      }
      function delete_row(ws, row_index) {
          var variable = XLSX.utils.decode_range(ws["!ref"])
          console.log(variable);
          for (var R = row_index; R < variable.e.r; ++R) {
              for (var C = variable.s.c; C <= variable.e.c; ++C) {
                  console.log(C);
                  ws[ec(R, C)] = ws[ec(R + 1, C)];
              }
          }
          variable.e.r--
          ws['!ref'] = XLSX.utils.encode_range(variable.s, variable.e);
      }
      var result = delete_row(worksheet, 2);
      console.log(result);
      

      【讨论】:

        猜你喜欢
        • 2016-03-17
        • 2013-07-13
        • 1970-01-01
        • 2021-05-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-09
        相关资源
        最近更新 更多