1

我在 excel 中有一个范围,我需要根据 ID 列对 excel 文件进行排序。数据的范围总是从 A1 列到 A[row_count] 列。我尝试使用exceljs模块进行此操作,但没有找到任何排序功能。如何以编程方式实现排序?

这是我的excel文件内容。

  • 身份证 | 申请人 | 状态 | 评论
  • 3224 |Armin Barrywater |审查中|承销商将在下周结束。
  • 3244 |乔治·安吉尔乔夫 |新 |
  • 3257 |伊梅尔达·桑切斯 |新 |
  • 3223 |杰克横幅 |已批准 |
  • 3226 |Perry Kane |暂停|等待客户的文书工作。
  • 3225 |希拉·多纳休 |回顾 |
  • 3235 |Xavier Fannello |新 |
4

1 回答 1

0

这不是我的答案(我没有测试过),我在以下链接中找到了一个:

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]);
    }
  }
}
于 2018-11-19T16:53:23.727 回答