Angular xlsx - несколько json на лист

У меня есть экспорт в excel с использованием js-xlsx и функции utils.json_to_sheet.

Проблема в том, что у меня есть другой объект json, который я хочу экспортировать на тот же лист, прямо под предыдущим.

XLSX.utils.json_to_sheet(outputData);

Пытался найти что-нибудь об этом в документах и ​​так далее, но похоже, что ни у кого не было этой проблемы. Аналогичный вопрос был задан некоторое время назад, к сожалению, без ответа - the-same-sheet-in-exceljs">Как добавить несколько таблиц с разными наборами данных на один и тот же лист в exceljs . Любые идеи?


person Kris Bonev    schedule 07.01.2019    source источник


Ответы (2)


В итоге я поговорил со службой поддержки xlsx по почте, и они дали мне ответ. Существует функция с именем sheet_add_json.

Простой пример:

XLSX.utils.sheet_add_json(лист, secondJson, {skipHeader: true, origin: "A" + (firstJson.length + 3)});

Еще примеры:

Consider the worksheet:

XXX| A | B | C | D | E | F | G |
---+---+---+---+---+---+---+---+
 1 | S | h | e | e | t | J | S |
 2 | 1 | 2 |   |   | 5 | 6 | 7 |
 3 | 2 | 3 |   |   | 6 | 7 | 8 |
 4 | 3 | 4 |   |   | 7 | 8 | 9 |
 5 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |
This worksheet can be built up in the order A1:G1, A2:B4, E2:G4, A5:G5:

/* Initial row */

var ws = XLSX.utils.json_to_sheet([
  { A: "S", B: "h", C: "e", D: "e", E: "t", F: "J", G: "S" }
], {header: ["A", "B", "C", "D", "E", "F", "G"], skipHeader: true});


/* Write data starting at A2 */

XLSX.utils.sheet_add_json(ws, [
  { A: 1, B: 2 }, { A: 2, B: 3 }, { A: 3, B: 4 }
], {skipHeader: true, origin: "A2"});



/* Write data starting at E2 */

XLSX.utils.sheet_add_json(ws, [
  { A: 5, B: 6, C: 7 }, { A: 6, B: 7, C: 8 }, { A: 7, B: 8, C: 9 }
], {skipHeader: true, origin: { r: 1, c: 4 }, header: [ "A", "B", "C" ]});


/* Append row */

XLSX.utils.sheet_add_json(ws, [
  { A: 4, B: 5, C: 6, D: 7, E: 8, F: 9, G: 0 }
], {header: ["A", "B", "C", "D", "E", "F", "G"], skipHeader: true, origin: -1});
person Kris Bonev    schedule 08.01.2019

  1. Сначала создайте новую книгу

    пусть wb = XLSX.utils.book_new()

  2. Создать новый лист

    пусть ws = XLSX.utils.json_to_sheet (массив данных [i]); //dataarray[i] должен возвращать массив объектов

  3. Приложить лист к книге

    XLSX.utils.book_append_sheet(wb, ws, 'ИмяЛиста');

Пример кода

const arr = [
  [{ FirstColumn: "Some data", SecondColumn: "Page 1 with 1 data" }],
  [
    { FirstColumn: "Some data-1", SecondColumn: "Page 2 with 2 data-1" },
    { FirstColumn: "Some data-2", SecondColumn: "Page 2 with 2 data-2" }
  ],
  [
    { FirstColumn: "Some data-1", SecondColumn: "Page 3 with 3 data-1" },
    { FirstColumn: "Some data-2", SecondColumn: "Page 3 with 3 data-2" },
    { FirstColumn: "Some data-3", SecondColumn: "Page 3 with 3 data-3" }
  ]
];
const fileName = "filename.xlsx";
const sheetName = ["sheet1", "sheet2", "sheet3"];

let wb = XLSX.utils.book_new();
for (var i = 0; i < sheetName.length; i++) {
  let ws = XLSX.utils.json_to_sheet(arr[i]);
  XLSX.utils.book_append_sheet(wb, ws, sheetName[i]);
}
XLSX.writeFile(wb, fileName);
person Hassan Raza    schedule 24.12.2020