2

我有一个正在使用 js-xlsx 阅读的 excel 文件。代码工作正常,除了单元格为空的地方。这些单元格被忽略。创建我的 JSON 对象时如何获取这些单元格?

我经历了一些关于 SO 的问题以及其他一些论坛的相同问题,但没有令人满意的结果。

欢迎任何帮助。我的代码是:

 reader.addEventListener('load', function(){
        var data = this.result;
        var wb = XLSX.read(data, {type: 'binary', sheetStubs:true});
        //  console.log(headers);

        wb.SheetNames.forEach(function(sheetName){
            //pulling out column headers for tablecreation
            var headers = get_header_row(wb.Sheets[sheetName]);
            createTableInDB(headers);
            // Here is your object
            var XL_row_object = XLSX.utils.sheet_to_json(wb.Sheets[sheetName]);
            //console.log(XL_row_object);

            for(var i=0; i<XL_row_object.length; i++){
                var json_object = XL_row_object[i];

                if(json_object !== null){
                    var dataobject = {
                        "tablename": tname,
                        "dbname": dbname,
                        "info": json_object,
                        "uname": uname
                    }

                    dataobject = $.toJSON(dataobject);

                    $.ajax({
                        type: "POST",
                        url: "insertIntoTable.php",
                        async: false,
                        data:"pInsertData=" + dataobject, 
                        success: function(msg){

                            console.log(msg);

                        }
                    });
                    //console.log(json_object);

                }

            }
        });
    });

    reader.readAsBinaryString(document.querySelector('input').files[0]);

该文件通过 HTML 中的输入上传。提前致谢

4

3 回答 3

8

只需在sheet_to_json方法中传递默认值:

var jsonObj = XLS.utils.sheet_to_json(data.Sheets[data.SheetNames[0]], {
                header: 0,
                defval: ""
              });
于 2019-07-31T12:40:57.777 回答
1

图书馆有一个选项。在下面的代码中:

...
// Here is your object
var XL_row_object = XLSX.utils.sheet_to_json(wb.Sheets[sheetName]);
//console.log(XL_row_object);
...

您应该为 options 参数提供以下选项,{defval: null}如下所示:

...
// Here is your object
var XL_row_object = XLSX.utils.sheet_to_json(wb.Sheets[sheetName], {defval: null});
//console.log(XL_row_object);
...

然后,它应该工作。

于 2020-09-10T13:40:46.677 回答
0

解决方案 1 .Condition "if(h===undefined)continue;" 在“xlsx.core.min.js”中将其注释掉。

或正确地做...

解决方案 2。通过在运行此 XLSX.utils.sheet_to_json(wb.Sheets[name] , {blankCell : false}) 时传递 Condition 额外参数。在第号行添加条件。19150 “如果(defval === undefined && blankCell)继续;” 在文件 xlsx.js 等中。

于 2018-03-04T07:05:45.787 回答