angular js export

in Javascript

Esportare Json in Excel con Angular Js

Recentemente ho dovuto metter mano ad un’applicazione scritta in angular js alcuni anni fa, aggiungendo la funzionalità di export di un flusso dati in formato JSON in EXCEL / CSV. Al termine della trasformazione il file excel dovrà essere scaricato automaticamente dal browser.

Dopo un pò di ricerche la mia attenzione è caduta sulla libreria AlaSQL che avevo precedentemente utilizzato in node.js.

La libreria è utilizzata per poter eseguire operazioni SQL su oggetti Jascript come ad esempio array e oggetti. Con questa libreria è possibile eseguire operazioni di manipolazione dei dati come raggruppamenti, filtri e join, operazioni tipiche del linguaggio SQL.

Gli sviluppatori garantiscono un alto livello di compatibilità con le ultime versioni dei browsers e con node.js, sia in applicazioni desktop sia in applicazioni mobile.

Una delle caratteristiche di AlaSQL è la possibilità di effettuare importazioni ed esportazione di dati da formati differenti, tra cui ovviamente anche in Excel.

L’esportazione in formato CSV non necessita l’inclusione di ulteriori librerie, mentre per quanto riguarda il formato EXCEL è necessario includere la libreria XLSX che consente operazioni di lettura / scrittura.

Sintassi

Utilizzano la sintassi:

che di fatto utilizza i comandi SQL, vengo letti i dati all’interno dell’oggetto data e tramite un’operazione SELECT dovranno essere inseriti all’interno del file destFilename.xlsx. Il funzionamento è garantito dal modulo utilizzato, in questo caso XLSX: avremmo potuto utilizzare altri moduli, come ad esempio CSV che consente di esportare in formato csv.

La sintassi completa per utilizzare la libreria alasql è la seguente:

E’ possibile specificare un ulteriore parametro alla libreria, in modo da definire l’header del file generato (se non viene indicato nulla, il file excel viene generato senza header).

La libreria supporta le chiamate asincrone, utilizzando il meccanismo delle promise:

Ritornando all’implementazione è stato sufficiente realizzare un service dedicato per il recupero dei dati dalle API e richiamarlo all’interno del controller. Al termine della chiamata del service, i dati in arrivo sono stati passati alla libreria alasql per l’esportazione finale.