无法使用 js-xlsx 读取空单元格读取 excel 文件
unable to read empty cells reading excel file using js-xlsx
我有一个 excel 文件正在使用 js-xlsx 读取。除了单元格为空的地方,代码工作正常。这些单元格将被忽略。在创建我的 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 中的输入上传的。
提前致谢
解决方案1."xlsx.core.min.js"中的条件"if(h===undefined)continue;"注释掉。
或者正确地做...
解决方案 2。通过传递条件额外参数 while 运行 this XLSX.utils.sheet_to_json(wb.Sheets[name] , {blankCell : false}).在第 1 行添加一个条件。 19150 "if(defval === undefined && blankCell) continue;" 文件 xlsx.js 等..
只需在 sheet_to_json
方法中传递默认值:
var jsonObj = XLS.utils.sheet_to_json(data.Sheets[data.SheetNames[0]], {
header: 0,
defval: ""
});
图书馆有一个选项。在您的以下代码中:
...
// Here is your object
var XL_row_object = XLSX.utils.sheet_to_json(wb.Sheets[sheetName]);
//console.log(XL_row_object);
...
您应该向选项参数 {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);
...
那么,应该可以了。
我有一个 excel 文件正在使用 js-xlsx 读取。除了单元格为空的地方,代码工作正常。这些单元格将被忽略。在创建我的 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 中的输入上传的。 提前致谢
解决方案1."xlsx.core.min.js"中的条件"if(h===undefined)continue;"注释掉。
或者正确地做...
解决方案 2。通过传递条件额外参数 while 运行 this XLSX.utils.sheet_to_json(wb.Sheets[name] , {blankCell : false}).在第 1 行添加一个条件。 19150 "if(defval === undefined && blankCell) continue;" 文件 xlsx.js 等..
只需在 sheet_to_json
方法中传递默认值:
var jsonObj = XLS.utils.sheet_to_json(data.Sheets[data.SheetNames[0]], {
header: 0,
defval: ""
});
图书馆有一个选项。在您的以下代码中:
...
// Here is your object
var XL_row_object = XLSX.utils.sheet_to_json(wb.Sheets[sheetName]);
//console.log(XL_row_object);
...
您应该向选项参数 {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);
...
那么,应该可以了。