簡體   English   中英

使用node.js對給定列的Excel文件進​​行排序

[英]Sort excel file given column using nodejs

我在excel中有一個范圍,我需要根據ID列對excel文件進​​行排序。 數據將始終在列A1到列A [row_count]的范圍內。 我嘗試將exceljs模塊用於此操作,但未找到任何排序功能。 如何以編程方式實現排序?

這是我的Excel文件內容。

  • ID | 申請者 現狀 評論
  • 3224 | Armin Barrywater |正在審查|包銷商的工作截止到下周。
  • 3244 | Georgi Angelchov |新|
  • 3257 | Imelda Sanchez |新增|
  • 3223 | Jack Banner |已批准|
  • 3226 | Perry Kane |保留中|正在等待客戶的文書工作。
  • 3225 | Shiela Donahue |正在審查中|
  • 3235 | Xavier Fannello |新增|

這不是我的答案(我尚未測試),我在以下鏈接中找到了一個:

https://github.com/guyonroche/exceljs/issues/363#issuecomment-435692059

const sortByColumn = columnNum => {
  if (worksheet) {
    columnNum--;
    const sortFunction = (a, b) => {
      if (a[columnNum] === b[columnNum]) {
        return 0;
      }
      else {
        return (a[columnNum] < b[columnNum]) ? -1 : 1;
      }
    }
    let rows = [];
    for (let i = 1; i <= worksheet.actualRowCount; i++) {
      let row = [];
      for (let j = 1; j <= worksheet.columnCount; j++) {
        row.push(worksheet.getRow(i).getCell(j).value);
      }
      rows.push(row); 
    }
    rows.sort(sortFunction);
    // Remove all rows from worksheet then add all back in sorted order
    worksheet.spliceRows(1, worksheet.actualRowCount);
    // Note worksheet.addRows() may add them to the end of empty rows so loop through and add to beginnning
    for (let i = rows.length; i >= 0; i--) {
      worksheet.spliceRows(1, 0, rows[i]);
    }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM