【问题标题】:Accessing Cells with Sheetjs使用 Sheetjs 访问单元格
【发布时间】:2020-04-09 19:46:21
【问题描述】:

我在这里关注了演示: https://github.com/SheetJS/js-xlsx/tree/master/demos/electron

我可以将一个 excel 文件拖到我的电子应用程序中。

documentation 说,您可以通过以下方式访问每个单元格:

for(var R = range.s.r; R <= range.e.r; ++R) {
  for(var C = range.s.c; C <= range.e.c; ++C) {
    var cell_address = {c:C, r:R};
    /* if an A1-style address is needed, encode the address */
    var cell_ref = XLSX.utils.encode_cell(cell_address);
  }
}

如何在下面的代码中使用它?我将文件的内容存储在我的测试变量中,但我无法访问它。那里的文档缺乏信息。

var do_file = (function() {
    return function do_file(files) {
        var f = files[0];
        var reader = new FileReader();
        reader.onload = function(e) {
            var data = e.target.result;
            data = new Uint8Array(data);
            test = XLSX.read(data, {type: 'array'});
            console.log(test);
        };
        reader.readAsArrayBuffer(f);
    };
})();

我不知道如何开始,在此先感谢

【问题讨论】:

    标签: javascript electron sheetjs


    【解决方案1】:

    这里是:

    var do_file = (function() {
        return function do_file(files) {
            var f = files[0];
            var reader = new FileReader();
            reader.onload = function(e) {
                var data = e.target.result;
                data = new Uint8Array(data);
                //process_wb(XLSX.read(data, {type: 'array'}));
                            /* read the file */
                var workbook = XLSX.read(data, {type: 'array'}); // parse the file
                var sheet = workbook.Sheets[workbook.SheetNames[0]]; // get the first worksheet
    
                /* loop through every cell manually */
                var range = XLSX.utils.decode_range(sheet['!ref']); // get the range
                for(var R = range.s.r; R <= range.e.r; ++R) {
                  for(var C = range.s.c; C <= range.e.c; ++C) {
                    /* find the cell object */
                    console.log('Row : ' + R);
                    console.log('Column : ' + C);
                    var cellref = XLSX.utils.encode_cell({c:C, r:R}); // construct A1 reference for cell
                    if(!sheet[cellref]) continue; // if cell doesn't exist, move on
                    var cell = sheet[cellref];
                    console.log(cell.v);
    
            };
            reader.readAsArrayBuffer(f);
        };
    })();
    

    【讨论】:

      【解决方案2】:

      通常您可以访问具有标准 excel 坐标的单元格,例如

      console.log(sheet['My Sheet Name']['B3'].v);
      

      在此处查看完整的数据类型:https://github.com/SheetJS/sheetjs/blob/master/README.md#cell-object

      【讨论】:

        猜你喜欢
        • 2022-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-18
        • 2017-06-03
        • 1970-01-01
        • 1970-01-01
        • 2020-10-17
        相关资源
        最近更新 更多