Exportando datos desde Angular 馃殗 sin bibliotecas de terceros

Publicado el 03.12.2023 a las 21:34

Exportando datos desde Angular 馃殗 sin bibliotecas de terceros

  1. Creando el contenido del fichero CSV

  2. Descargando el fichero

Exportando datos desde Angular 馃殗 sin bibliotecas de terceros

Te voy a explicar c贸mo exportar datos desde tu aplicaci贸n Angular sin usar bibliotecas de terceros.


Cuando tengo que realizar una tarea compleja que me tomar铆a mucho esfuerzo y tiempo y existe una biblioteca de un tercero que lo soluciona no tengo drama en usarla.


No obstante, si la tarea la puedo programar yo, lo hago, ya que a veces las bibliotecas de terceros quedan obsoletas o sin mantenimiento.


Tambi茅n me he encontrado en que para hacer alguna tarea, algunas bibliotecas ocupan demasiado espacio en disco.


Se debe a que hace much铆simas otras tareas que si no necesito me est谩 sobrecargando mi aplicaci贸n.


Por ejemplo, existe una biblioteca para saber si un n煤mero dado es par o impar y dicha biblioteca ocupa 4 archivos y un total de 6,51 kB.

Te puedes hacer una funci贸n de una l铆nea y obtendr谩s lo mismo.


function is_odd(input:number):boolean{
  return input%2 !== 0;
}

Exportar datos desde Angular de forma nativa no es dif铆cil, te cuento.

驴C贸mo convertir un array en CSV con Angular?

Sup贸n que tenemos un array de objetos, donde cada objeto es una fila de datos y donde el primer dato es el nombre del campo a exportar.


Lo que vamos a hacer es crear un array de filas, y la primera fila tendr谩 el nombre de los campos separados por el car谩cter ;


Ser铆a algo as铆:

const fieldNames=Object.keys(data[0]);
const rows:string[]=[];
rows.push(fieldNames.join(';')+'\r');
data.forEach(item=>{
  const row:string[]=[];
  fieldNames.forEach(field=>{
    const fieldValue=item[field];
    if(!fieldValue){
        row.push('');
    }else{
        row.push(fieldValue); 
    } 
  })
  rows.push(row.join(';')+'\r');
})
const rowsToString=rows.join('\n')

Descargando el fichero

A continuaci贸n, crearemos un enlace de descarga que permitir谩 al usuario descargar el archivo CSV generado.

//rowsToString es la constante que creamos en el punto anterior donde estaba el contenido del CSV

const blob = new Blob([rowsToString], { type: 'text/csv' });
const url = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'data.csv';
a.click();
window.URL.revokeObjectURL(url);
        

El art铆culo de hoy ha sido cortito 馃槑


Hasta luego 馃枛