0

编码 :

    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

该代码有什么问题?

4

1 回答 1

0

来自 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;

希望能帮助到你。

于 2017-04-11T12:25:26.427 回答