Saltar al contenido

Agregar a un archivo csv en nodejs (usando csv-write-stream)

Agradeceríamos tu ayuda para difundir nuestras reseñas con relación a las ciencias de la computación.

Solución:

Tal vez tarde, pero para las personas que tienen el mismo problema que yo Error: no se especificaron encabezados

  if (!fs.existsSync(finalPathFile))
    writer = csvWriter( headers: ["header1", "header2"]);
  else
    writer = csvWriter(sendHeaders: false);

  writer.pipe(fs.createWriteStream(finalPathFile, flags: 'a'));
  writer.write(
    header1:"hello",
    header2:"world",
  );
  writer.end();

El concepto significa que cuando accede al archivo por primera vez, configura los encabezados, para que luego pueda ser leído por otro software de back-end como Excel. Después de eso, cuando vuelva a acceder al archivo, no establecerá los encabezados. Pero ten en cuenta, cada vez que escribe en el archivo, debe establecer en qué columna está escribiendo. Luego obtendrá el resultado deseado, que es algo como esto:

header1,header2
John,5th avenue,
Richard,St. Jorge street

Realmente, fs.createWriteStream función decide cómo abrir 'out.csv'

En su caso, puede abrir este archivo para agregar usando a bandera:

writer.pipe(fs.createWriteStream('out.csv', flags: 'a'))

Aquí están los documentos para esta función y las banderas.

Estaba teniendo problemas en los que la primera fila de datos que traté de escribir después del encabezado estaba vacía (solo un montón de comas como esta,,,,,).

También recibí el mensaje Error: No hay encabezados cuando intenté configurar sendHeaders false.

Mi solución se basó en la respuesta original de @Firecat. Modifiqué a esto que funciona muy bien para mí.

const fs = require('fs');
var csvWriter = require('csv-write-stream');
var writer = csvWriter(sendHeaders: false); //Instantiate var
var csvFilename = "C:somepathmyfile.csv";

// If CSV file does not exist, create it and add the headers
if (!fs.existsSync(csvFilename)) 
  writer = csvWriter(sendHeaders: false);
  writer.pipe(fs.createWriteStream(csvFilename));
  writer.write(
    header1: 'DATE',
    header2: 'LASTNAME',
    header3: 'FIRSTNAME'
  );
  writer.end();
 

// Append some data to CSV the file    
writer = csvWriter(sendHeaders: false);
writer.pipe(fs.createWriteStream(csvFilename, flags: 'a'));
writer.write(
  header1: '2018-12-31',
  header2: 'Smith',
  header3: 'John'
);
writer.end();

// Append more data to CSV the file    
writer = csvWriter(sendHeaders: false);
writer.pipe(fs.createWriteStream(csvFilename, flags: 'a'));
writer.write(
  header1: '2019-01-01',
  header2: 'Jones',
  header3: 'Bob'
);
writer.end();

Te mostramos las comentarios y valoraciones de los lectores

Tienes la opción de añadir valor a nuestra información añadiendo tu experiencia en los comentarios.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *