sheetjs xlsx, Как написать объединенные ячейки?

Мне нужно создать xlsx с объединенными ячейками, используя sheetjs.

данные:

[
  {
    "id": "nick",
    "items": [
      {
        "name": "ball"
      },
      {
        "name": "phone"
      }
    ]
  },
  {
    "id": "jack",
    "items": [
      {
        "name": "pen"
      },
      {
        "name": "doll"
      }
    ]
  }
]

Мой код:

var ws = XLSX.utils.json_to_sheet(data);
var wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, "");
var wbout = XLSX.write(wb, {bookType:'xlsx', type:'array'});
saveAs(new Blob([wbout],{type:"application/octet-stream"}), filename + ".xlsx");

Результат, который я хочу получить:

результат

Как мне получить этот результат?

... Спасибо


person chacker    schedule 28.11.2018    source источник
comment
я также ожидаю, что библиотека создаст нужный лист с заданным объектом json. но, похоже, вложенный массив плохо обрабатывается ... вернется, когда найдет решение. на данный момент информация, которую я получил от Google. Кажется, клиенту нужно явно указать строку/столбец слияния.   -  person RyanShao    schedule 27.05.2019
comment
Привет, шакер, ты нашел какие-нибудь решения?   -  person Manoj Rejinthala    schedule 17.09.2020


Ответы (1)


const merge = [
  { s: { r: 1, c: 0 }, e: { r: 2, c: 0 } },{ s: { r: 3, c: 0 }, e: { r: 4, c: 0 } },
];
ws["!merges"] = merge;

Используйте этот код для слияния A2:A3 ({ s: { r: 1, c: 0 }, e: { r: 2, c: 0 } }) и A4:A5 ({ s: { r: 3, c: 0 }, e: { r: 4, c: 0 } })

Здесь s = начало, r = строка, c = столбец, e = конец

person Amjad Rehman A    schedule 14.02.2019
comment
Мне интересно, для чего нужны s и e? которые являются ключом {r: n, c: n} в массиве слияния. Это случайно названные ключи? - person JillAndMe; 27.10.2020
comment
@JillAndMe s = начало, e = конец, r = строка и c = столбец. Я думаю, что это не случайное название. исх. docs.sheetjs.com - person Amjad Rehman A; 27.10.2020