es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Convertir un array de strings en un string para el archivo CSV.

Tengo la siguiente matriz de cadenas.

const test = ["Date,type,user,Account,Desc",
    "1 jan 2021,RR,GK,,Testing acc",
    "1 jan 2021,RR,GK,,Testing acc",
    "1 jan 2021,RR,GK,,Testing acc",
    "1 jan 2021,RR,GK,,Testing acc"]

Ahora estoy tratando de convertir esta matriz de cadenas en una única cadena que luego se pueda utilizar para crear un archivo CSV.

Entonces intenté test.toString() que resultó en

"Date,type,user,Account,Desc
,1 jan 2021,RR,GK,,Testing acc
,1 jan 2021,RR,GK,,Testing acc
,1 jan 2021,RR,GK,,Testing acc
,1 jan 2021,RR,GK,,Testing acc
"
Después de usar estos datos para crear el archivo CSV, en realidad se salta una columna, lo que significa que la fecha se agrega en la siguiente columna y el último dato, que es "Testing acc", no tiene ningún encabezado, debería haber sido "Desc".

Si elimino la coma antes de cada “1 jan 2021”, entonces todas las columnas se toman correctamente, pero la fecha debería haber sido “######” en su lugar toma el valor original.

¿Cómo puedo solucionar esto?

Gracias.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para convertir adecuadamente la matriz de cadenas dada en una sola cadena para su uso en la creación de un archivo CSV, puedes utilizar el paquete csv-stringify que maneja el formato de los valores separados por comas y escapa los caracteres cuando es necesario.

    Primero, debes instalar el paquete ejecutando npm install csv-stringify en tu terminal.

    Luego, en tu código, puedes requerir el módulo y usarlo para convertir en cadena tu matriz de cadenas:

    const stringify = require('csv-stringify');
    
    const test = [
      "Fecha,tipo,usuario,Cuenta,Desc",
      "1 ene 2021,RR,GK,,Cuenta de prueba",
      "1 ene 2021,RR,GK,,Cuenta de prueba",
      "1 ene 2021,RR,GK,,Cuenta de prueba",
      "1 ene 2021,RR,GK,,Cuenta de prueba"
    ];
    
    stringify(test, (err, output) => {
      if (err) throw err;
      console.log(output);
    });
    

    La salida de este código debería ser:

    Fecha,tipo,usuario,Cuenta,Desc
    1 ene 2021,RR,GK,,Cuenta de prueba
    1 ene 2021,RR,GK,,Cuenta de prueba
    1 ene 2021,RR,GK,,Cuenta de prueba
    1 ene 2021,RR,GK,,Cuenta de prueba
    

    Esta salida se puede utilizar para crear un archivo CSV sin ningún problema de alineación o formato de columnas.

    Ten en cuenta que en la matriz original, la fila de encabezado termina con "\r". Esto puede causar problemas al analizar el CSV más tarde. Se recomienda eliminar este carácter de la fila de encabezado.

Comments are closed.