estoy usando este paquete xlsx
Quería exportar una matriz anidada de exportación de objetos en el ejemplo de hoja de Excel agregado a continuación, ¡ayuda por favor!
let data = [ { "product": "Test Product", "id": 1, "childProduct": [ { name: "Child Product 1", "id": 11 }, { name: "Child Product 2", "id": 12 } ] }, { "product": "Test Product", "id": 1, "childProduct": [ { "name": "Child Product 1", "id": 13 }, { "name": "Child Product 2", "id": 14 } ] } ]He probado estas soluciones, pero no funciona, siempre reemplaza los últimos datos.
let wb = xlsx.utils.book_new(); data.map((item: any) => { xlsx.utils.json_to_sheet(item.childProduct); })Una sola hoja debe ser así:
No estoy seguro de si hay una forma más elegante de hacer esto con los métodos de biblioteca xlsx incorporados, pero puede transformar los datos para obtener el resultado deseado.
La matriz que pasa a la función json_to_sheet debe estructurarse de esta manera:
[ { "name": "Child Product 1", "id": 11 }, { "name": "Child Product 2", "id": 12 }, { "name": "--", "id": "--" }, { "name": "name", "id": "id" }, { "name": "Child Product 1", "id": 13 }, { "name": "Child Product 2", "id": 14 } ]Transforme los datos en una nueva matriz para exportar:
const exportData = data.map((item, i) => { if (data.length !== i+1) { item.childProduct.push({"id": "--", "name": "--"}); item.childProduct.push({"id": "id", "name": "name"}); } return item.childProduct; }).flat();Exportar datos usando la biblioteca:
xlsx.utils.json_to_sheet(exportData);let dummyArray =[] data.map((dat)=>{ dat.childProduct.forEach((x)=>{ dummyArray.push(x) }) }); xlsx.utils.json_to_sheet(dummyArray)Esto es para formato simple.