代码:
var workbook = XLSX.read(data, {type: 'binary'});
var first_sheet_name = workbook.SheetNames[0];
var worksheet = workbook.Sheets[first_sheet_name];
var k=1
var desired_cell = worksheet['A'+k].w;
上面的代码运行良好但:
for (var i = 1; i <= 50; i++) {
var obj = {};
var cell = (worksheet[('A'+i)]).w;
obj.PickUpDate = cell;
obj.PickUpTimeSlot = cell;
obj.PickUpAddress = cell;
obj.DeliveryAddress = cell;
obj.BoxType = cell;
array.push(obj);
}
此代码给出错误:
Uncaught TypeError: Cannot read property 'w' of undefined
at FileReader.reader.onload
该行:
var cell = (worksheet[('A'+i)]).w;
很好,因为我可以将"单元格"打印到控制台。这两个代码段都在FileReader.reader.onload
函数中。我正在使用 xlsx 软件包 https://github.com/SheetJS/js-xlsx
该代码有什么问题?
来自 SheetJS/js-xlsx 文档:
内置导出实用程序(例如 CSV 导出器(将使用 w 文本(如果可用(。若要更改值,请确保在尝试导出之前删除 cell.w(或将其设置为未定义(。如果可能,实用程序将从数字格式 (cell.z( 和原始值重新生成 w 文本。
您无法确定是否定义了(worksheet[('A'+i)]).w
。
我不知道您的工作表数据是什么,但也许这可以完成这项工作:
var cell = (typeof (worksheet[('A'+i)]).w !== 'undefined') ? worksheet[('A'+i)]).w : worksheet[('A'+i)]).v;
希望对您有所帮助。