js-xls - лист в json на Angular возвращает только первый ряд

У меня есть файл xlsx с этими данными:

Totale venduto  |   Differenza  |   Totale incassato
3.354,95        |   16,73       |   3.371,68

Этот файл отправлен методу readBlob как BLOB, как в следующем коде:

import { utils, write, read, readFile, WorkBook, WorkSheet, } from 'xlsx';

export class ExportXlsService
{
    public readBlob(data: any)
    {
        let reader = new FileReader()
        reader.onload = () =>
        {
            let u8 = new Uint8Array(reader.result);
            let wb: WorkBook = read(u8, { type: 'array' });        
            let wsname: string = wb.SheetNames[0];
            let ws: WorkSheet = wb.Sheets[wsname];        
            console.log(JSON.stringify(ws));
            // Read data                
            let xlsData = utils.sheet_to_json(ws, { header: 1 });    
            console.log(JSON.stringify(xlsData));
        }
        reader.readAsArrayBuffer(data);
    }
}

Я не понимаю почему, когда я звоню utils.sheet_to_json он возвращает только первую строку данных.

Ниже приведен вывод консоли:

{"!ref":"A1:C1","A1":{"t":"s","v":"Totale venduto","r":"<t>Totale venduto</t>","h":"Totale venduto","w":"Totale venduto"},"B1":{"t":"s","v":"Differenza","r":"<t>Differenza</t>","h":"Differenza","w":"Differenza"},"C1":{"t":"s","v":"Totale incassato","r":"<t>Totale incassato</t>","h":"Totale incassato","w":"Totale incassato"},"A2":{"t":"n","v":3354.95,"w":"3,354.95"},"B2":{"t":"n","v":16.72999945282936,"w":"16.73"},"C2":{"t":"n","v":3371.679999452829,"w":"3,371.68"}}

[["Totale venduto","Differenza","Totale incassato"]]

1 ответ

Решение

Я нашел проблему. В документации я вижу, что лист по умолчанию range это (ws['!ref']), Так что смотрите содержание console.log(JSON.stringify(ws)) Я вижу, что диапазон был "!ref":"A1:C1",

Установка диапазона как "!ref":"A1:C2":

let xlsData = utils.sheet_to_json(ws, { range: "A1:C2", header: 1 });

вывод следующий:

[["Totale venduto","Differenza","Totale incassato"],["3,354.95","16.73","3,371.68"]]
Другие вопросы по тегам