【问题标题】:SheetJs, React. I'm reading a huge XLSX file, but instead of starting at row 0 I want to start from the last rowSheetJs,反应。我正在读取一个巨大的 XLSX 文件,但我不想从第 0 行开始,而是想从最后一行开始
【发布时间】:2023-02-03 18:05:52
【问题描述】:

我的任务是导入和解析一个巨大的 XLSX 文件并显示为仪表板(我知道这将是后端的任务,但我需要在前端完成)。

我需要最后 100 行,有人可以帮我吗?到目前为止,这是我的代码:

  const handleFile = async(e) => {

const file = e.target.files[0];
const data = await file.arrayBuffer();
const workbook = XLSX.readFile(data, {sheetRows: 100});

const worksheet = workbook.Sheets[workbook.SheetNames[0]];
const jsonData = XLSX.utils.sheet_to_json(worksheet, { raw: false, range: 1048476});

setChartData(jsonData)

}

我试过 Range 参数,但它给我带来了不止一个对象并使我的仪表板崩溃。

【问题讨论】:

    标签: javascript reactjs xlsx sheetjs


    【解决方案1】:

    范围的一个问题是您需要设置标题列,否则它将把您的第一行解释为标题。您可以通过读取前两行并从中获取密钥来做到这一点。然后,您可以使用XLSX.utils.decode_range(worksheet['!ref'])获取行数

    总而言之,它应该类似于:

    var csv = "a,b,c
    1,2,3
    4,5,6
    7,8,9
    10,11,12
    13,14,15
    16,17,18
    19,20,21
    22,23,24
    25,26,27
    28,29,30
    1,2,3
    4,5,6
    7,8,9
    10,11,12
    13,14,15
    16,17,18
    19,20,21
    22,23,24
    25,26,27
    67,68,69
    70,71,72
    73,74,75
    76,77,78
    79,80,81
    82,83,84
    85,86,87
    88,89,90
    91,92,93
    94,95,96
    97,98,99"
    var wb = XLSX.read(csv, {type:"binary"});
    const worksheet = wb.Sheets[wb.SheetNames[0]];
    var range = XLSX.utils.decode_range(worksheet['!ref']);
    var numRows = range.e.r - range.s.r + 1
    const header = Object.keys(XLSX.utils.sheet_to_json(wb.Sheets.Sheet1, {raw:false, range: `A1:ZZ2`})[0]);
    const numCols = header.length - 1;
    const lastCol = String.fromCharCode('A'.charCodeAt(0) + numCols);
    var data = XLSX.utils.sheet_to_json(wb.Sheets.Sheet1, {raw:false, defval:null, range: numRows-10, header});
    console.log(data)
    <script src="https://unpkg.com/xlsx@0.18.5/dist/xlsx.full.min.js"></script>
    <pre id="out"></pre>

    【讨论】:

      猜你喜欢
      • 2019-05-25
      • 2020-05-18
      • 1970-01-01
      • 1970-01-01
      • 2021-09-02
      • 2018-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多