亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為 Excel 中的每行數據返回 JSON 對象

為 Excel 中的每行數據返回 JSON 對象

子衿沉夜 2023-09-21 10:49:36
我正在為 SheetJS 使用 webpack。我對 webpack 比較陌生,而且對 SheetJS 完全是新手。我不想返回Excel 數據的一個JSON 對象,而是想為Excel 中的每一行數據返回一個 JSON 對象。輸入 Excel 布局示例:Col1     Col2      Col3A2       B2        C2A3       B3        C3此示例中的理想輸出是 2 個 JSON 對象:JSON 1:{    "A2": [        {           "Col1": "A2"           "Col2": "B2"           "Col3": "C2"        }    ]}JSON 2: {       "A3": [        {           "Col1": "A3"           "Col2": "B3"           "Col3": "C3"        }    ] }嘗試的解決方案:var to_json_linebyline = function to_json_linebyline(wb){    var sheet = wb.Sheets['Sheet1'];    var result = {};    var row, rowNum, colNum;    var range = XLSX.utils.decode_range(sheet['!ref']);    for(rowNum = range.s.r; rowNum <= range.e.r-2; rowNum++){    row = [];       for(colNum=range.s.c; colNum<=range.e.c; colNum++){          var nextCell = sheet[          XLSX.utils.encode_cell({r: rowNum, c: colNum})       ];       if( typeof nextCell === 'undefined' ){          row.push(void 0);       } else row.push(nextCell.w);       }       result[nextCell.v] = row;    }    return JSON.stringify(result, 2, 2);}當前結果:{  "Col3": [    "Col1",    "Col2",    "Col3"  ],  "C2": [    "A2",    "B2",    "C2"  ],  "C3": [    "A3",    "B3",    "C3"  ]}任何朝著正確方向發展的事情都會很棒。如果它有幫助,這里是github 存儲庫..謝謝!
查看完整描述

1 回答

?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

你的意圖是正確的,代碼是錯誤的。您正在定義數據并將其推送到數組中,而不是創建 JSON 對象。嘗試這個。


var to_json_linebyline = function to_json_linebyline(wb){

    var sheet = wb.Sheets['Sheet1'];

    var results = [];

    var range = XLSX.utils.decode_range(sheet['!ref']);

    for(let rowNum = (range.s.r+1); rowNum <= range.e.r; rowNum++){

       let thisRow = {},

           thisNode = '';

       

       for(let colNum=range.s.c; colNum<=range.e.c; colNum++){

          var thisHeader = sheet[XLSX.utils.encode_cell({r: 0, c: colNum})].w

          var thisCell = sheet[XLSX.utils.encode_cell({r: rowNum, c: colNum})].w

          if(colNum === 0){ 

            thisNode = thisCell;

          }

          thisRow[thisHeader] = thisCell;

       }

       thisResult = {};

       thisResult[thisNode] = [thisRow]

       results.push(thisResult)

    }

    return JSON.stringify(results);

}


查看完整回答
反對 回復 2023-09-21
  • 1 回答
  • 0 關注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號