Então uriel, estou usando node puro e js puro, apenas o express para API no back e a biblioteca Xlsx-populate para tratar os dados e jogar em uma planilha, o dado chega via POST do usuario o back processa, cria uma planilha e manda para o front, vou deixar abaixo um trecho do código que faz isso.
O código abaixo faz todo o tratamento com a planilha antes de enviar
let run = (structure) => { async function getTreatDatasFromAPI() { let structureToExcel = await structure; await excelPopulate(structureToExcel); return structureToExcel; }
let excelPopulate = async (arrayStructureforExcel) => { return XlsxPopulate.fromBlankAsync().then((workbook) => { // adiciona uma nova aba na planilha // let new_sheet = sheet.addSheet("Nova Sheet");
// Nomeia uma aba da planilha como Planilha1
const sheet = workbook.sheet(0);
sheet.name("planilha");
sheet.row(1).cell(1).value("Part Numbers");
sheet.row(1).cell(2).value("Quantidade");
sheet.row(1).cell(3).value("Preços com Fator 3");
// Arrays que recebem posições das celulas no excel
let cellColumnA = [];
let cellColumnB = [];
let cellColumnC = [];
for (let i = 2; i <= arrayStructureforExcel.length + 1; i++) {
cellColumnA.push(`A${i}`);
cellColumnB.push(`B${i}`);
cellColumnC.push(`C${i}`);
}
sum = 0;
for (let i = 0; i < cellColumnA.length; i++) {
sheet.cell(cellColumnA[i]).value(arrayStructureforExcel[i].PartNumber);
sheet.cell(cellColumnB[i]).value(arrayStructureforExcel[i].Qtd);
sheet.cell(cellColumnC[i]).value(arrayStructureforExcel[i].Preco);
sheet
.row(cellColumnC.length + 2)
.cell(3)
.value("Total: " + (sum += arrayStructureforExcel[i].Preco));
}
return workbook.toFileAsync("StructureAndPrizes.xlsx");
});
}; getTreatDatasFromAPI(); }; Código abaixo envia o arquivo que preciso atualizar antes de mandar para o usuario
const getAll = async (req, res, next) => { try { const workbook = await XlsxPopulate.fromFileAsync( "StructureAndPrizes.xlsx" ); // console.log(workbook);
Realiza edições no workbook, se necessário.
const data = await workbook.outputAsync();
Define o nome do arquivo de saída.
await res.attachment("pivot.xlsx");
Envia o workbook como resposta.
await res.send(data);
} catch (error) { next(error); } };
Então vc manda atulizar no FRONT e não atualiza no back. Ai vc precisa mandar atualizar de novo, finalmente atualizando no back?
Ou é no front?
É isso?