SheetJS json_to_sheet переименование заголовков

У меня есть массив объектов. По умолчанию sheet_to_json использует ключи объекта в качестве заголовков. Однако мне нужно переименовать эти заголовки без явного изменения моего массива объектов.

Это возможно?


person Kay Singian    schedule 07.09.2018    source источник


Ответы (4)


замените последнюю строку ниже.

XLSX.utils.sheet_add_json(ws, data, {skipHeader: true, origin: "A2"});
person Peilin Zhai    schedule 24.02.2020

Делюсь найденным решением

// Using same variables as the above answer
var Heading = [
  ["FirstName", "Last Name", "Email"],
];
var Data = [
  {firstName:"Jack", lastName: "Sparrow", email: "[email protected]"},
  {firstName:"Harry", lastName: "Potter", email: "[email protected]"},
];

//Had to create a new workbook and then add the header
const ws = XLSX.utils.book_new();
XLSX.utils.sheet_add_aoa(ws, Heading);

//Starting in the second row to avoid overriding and skipping headers
XLSX.utils.sheet_add_json(ws, Data, { origin: 'A2', skipHeader: true });
person Angel Alvarez Pérez    schedule 05.10.2020

я сделал это, потому что оба вышеперечисленных подхода не работали для меня

let EXCEL_EXTENSION = '.xlsx';
     let worksheet: XLSX.WorkSheet;
     let customHeader = true;
      let sheetName = 'My Sheet 1';  
      
    if (customHeader) {  
     const headers: any = { Cust: 'Customer Name', Addr1: 'Address 1' };
    this.data.unshift(headers); // if custom header, then make sure first row of data is custom header 
      worksheet = XLSX.utils.json_to_sheet(json, { skipHeader: true });
    } else {
      worksheet = XLSX.utils.json_to_sheet(json);
    }
    const workbook = XLSX.utils.book_new();
    const fileName =  'myExcelFile_Export_' + moment().format('MM-DD-YYYY_hh:mm:ss').toString() + EXCEL_EXTENSION;
    XLSX.utils.book_append_sheet(workbook, worksheet, sheetName);
    XLSX.writeFile(workbook, fileName);
person kumar chandraketu    schedule 24.07.2020
comment
Будем признательны за помощь, если вы объясните, что означают эти данные в коде --› 'this.data.unshift(headers)' - person Suresh; 09.04.2021
comment
Функция javascript Array.prototype.unshift() добавит заголовок в начало массива объектов. Поэтому первая строка в массиве объекта будет вашим заголовком, а оставшаяся будет строкой данных. - person kumar chandraketu; 09.04.2021

Это работает для меня:

var wb = XLSX.utils.book_new();

        var ws = XLSX.utils.json_to_sheet(json_data, { origin: 'A2', skipHeader: true });
        XLSX.utils.sheet_add_aoa(ws, headings); //heading: array of arrays

        XLSX.utils.book_append_sheet(wb, ws);


        XLSX.writeFile(wb, filename + '.xlsx') 
person Sebastián Ibarra    schedule 03.03.2021
comment
Хотя этот код может решить проблему, включая объяснение того, как и почему это решает проблему, действительно поможет улучшить качество. вашего сообщения и, вероятно, приведет к большему количеству голосов. Помните, что вы отвечаете на вопрос для будущих читателей, а не только для того, кто задает сейчас. Пожалуйста, отредактируйте свой ответ, чтобы добавить пояснения и указать, какие ограничения и предположения применяются. - person John Conde; 04.03.2021