Получить объединенное значение ячейки в каждом объекте JSON

У меня есть файл excel, который выглядит так:

введите здесь описание изображения

Как видите, есть несколько объединенных ячеек. Я использую js-xlsx для преобразования данных в объекты JSON в своем приложении. Вот код:

onFileLoad(loadedEvent: any) {
    let data = new Uint8Array(loadedEvent.target.result);
    let arr: Array<string> = new Array();
    for (let i = 0; i != data.length; i++) arr[i] = String.fromCharCode(data[i]);
    let bstr = arr.join("");
    let wb: XLSX.IWorkBook = XLSX.read(bstr, { type: "binary" });
    let workSheet = wb.Sheets[wb.SheetNames[0]];
    let jsonData = XLSX.utils.sheet_to_json(workSheet, {raw: true });
    console.log(jsonData);
}

Код отлично работает для строки, где указано «40», но в «41» объект JSON не содержит полей из объединенных ячеек. Вы можете увидеть это здесь:

введите здесь описание изображения

Есть ли способ сделать значения из объединенных ячеек в каждом объекте JSON?


person Jesper    schedule 22.01.2019    source источник


Ответы (1)


Я считаю, что вам нужно обрабатывать их отдельно, читатель просто возьмет верхнюю левую ячейку из объединенных диапазонов. Если вы хотите применить какую-то обработку после чтения объекта, вы можете получить доступ к объединенным ячейкам в рабочей книге. Листы[data_sheet_name]["!merges"] как

[
{//start of merge
s:{c:col_num, r:row_num},
//end of merge
e: {c:col_num, r:row_num}
},
more merge objects...
 ]

Можете использовать это, чтобы найти ваши данные и скопировать их, если хотите.

person Lobsterkite    schedule 24.05.2019