Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

133
Visualizações
Escribir en una plantilla XLSX y luego enviarla como respuesta en una función diferente, siempre devuelve indefinido

lo que estoy tratando de hacer

Las solicitudes llegan a mi servidor para descargar un archivo que contiene datos. La parte de descarga está en el front-end y funciona. Tomo los datos en mi backend y luego quiero escribirlos en una plantilla existente y devolver los datos.

Este es el controlador de la solicitud.

 async handle(request: Request, response: Response) { try { const fileName = 'test.xlsx' const binary = objectsToTemplateWorkBook() response.setHeader( 'Content-Disposition', 'attachment; filename=' + fileName ) response.setHeader('Content-Type', 'application/vnd.openxmlformats') response.end(binary, 'binary') } catch (error) { console.log(error) response.send(error) } }

Esta es la función que se supone que escribe los datos en la plantilla.

 export const objectsToTemplateWorkBook = (): Promise<any> => { var XlsxTemplate = require('xlsx-template') var dataBlob // Load an XLSX file into memory const blob = fs.readFile( path.join(__dirname, 'test_template.xlsx'), function (err, data) { console.log(__dirname) // Create a template var template = new XlsxTemplate(data) // Replacements take place on first sheet var sheetNumber = 1 // Set up some placeholder values matching the placeholders in the template var values = { people: [ { name: 'John Smith', age: 20 }, { name: 'Bob Johnson', age: 22 }, ], } // Perform substitution template.substitute(sheetNumber, values) // Get binary data dataBlob = template.generate() // ... } ) return dataBlob }

La función parece escribir los datos en la plantilla porque si registro el dataBlob dentro del método fs.Readfile, me muestra el archivo. Sin embargo, el dataBlob devuelto siempre devuelve undefined. Sé que esto se debe a la naturaleza asíncrona, pero honestamente no tengo idea de cómo solucionarlo. Entonces, mi pregunta para usted es: ¿cómo puedo obtener el dataBlob para que mi controlador lo envíe como respuesta?

about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda