Slik laster du opp og laster ned CSV-filer med AngularJS

Dette innlegget vil vise deg hvordan du laster opp CSV-filer data til AngularJS, les dataene, og konverter deretter til JSON for behandling. Deretter ser du hvordan du gjør alt i revers og laster ned en CSV-datadump fra AngularJS.

CSV-filer er foretrukne på grunn av deres enkelhet. De støttes også mye av mange typer programmer og gir en enkel måte å representere regnearkdata på.

Forutsetninger

Før du begynner med denne opplæringen, må du kontrollere at du har Node.js installert på datamaskinen. Hvis du ikke har det ennå, gå over til den offisielle nettsiden og installer den.

Du bør også ha en grunnleggende forståelse av følgende teknologier:

  • HTML
  • CSS
  • Javascript

Hvis du allerede har Node.js installert, må du kontrollere om du har de nyeste versjonene av Node og NPM.

node -v npm -v

CSV-moduler i kantet

Det er flere måter å manipulere CSV på Angular, og de inkluderer:

  • Papa Parse: Papa Parse er en kraftig CSV-parser som kan analysere CSV-strenge i små og store filer, samt konvertere tilbake til JSON. Vi bruker dette biblioteket i denne opplæringen.
  • csvtojson: Dette er en nodepakke som også er enkel å bruke.
  • Filleser: Det brukes til å lese innholdet av filer ved hjelp av Fil eller blob objekter å spesifisere filen som skal leses. Dette er imidlertid ikke en effektiv måte fordi du fortsatt må gå gjennom alle linjene i CSV og deretter JSON.stringify resultatene.

Starter

Målet vårt er å kunne gjøre følgende:

  • last ned en CSV-fil på klientsiden
  • last opp en CSV-fil
  • les en CSV-fil
  • konvertere CSV-fildata til JSON for behandling

Grensesnittet vårt bør se slik ut:

Vi starter først ved å skrive HTML-koden for grensesnittet som er vist ovenfor.

Opprett en mappe som heter mitt prosjekt, cd inn i prosjektmappen, og opprett to filer: home.html og app.js.

mkdir my_project cd my_project touch home.html berør app.js

Siden vi skal bruke Papa Parse-modulen, gå over til det offisielle nettstedet og last ned biblioteket. Deretter pakke inn innholdet og lagre papaparse.js og papaparse.min.js filer i prosjektmappen din. Prosjektstrukturen din bør se slik ut:

my_project / app.js home.html papaparse.js papaparse.min.js

Nedenfor er HTML-koden for å skape grensesnittet vårt. Lagre det som home.html.

        
BULK TOP UP
  1. Excel-filen skal inneholde tre kolonner
  2. Den første kolonnen inneholder Henvisning
  3. Den andre kolonnen inneholder Fornavn
  4. Den tredje kolonnen inneholder Etternavn
  5. Den andre kolonnen inneholder Fødselsdato
  6. Den tredje kolonnen inneholder Kjønnav personen

Kolonneoverskriftene skal være Henvisning ,Fornavn ,Etternavn,Dob,Kjønn

En prøvefil er tilgjengelig for nedlasting



Din opplastede CSV-fil vil bli vist til deg i en forhåndsvisning for Bekreftelse



Bekreft fil som skal lastes opp og klikk på Fortsett-knappen nedenfor

I koden ovenfor bruker vi ng-app direktiv for å definere vår søknad. Vi legger deretter til AngularJS og jQuery-biblioteker til vår nettside, så vel som resten av skriptfilene, dvs.. app.js, papaparse.js, og papaparse.min.js.

Vi definerer deretter programmets kontroller og bind deretter HTML-kontrollene til programdataene.

Last ned en CSV-fil

Siden vi allerede har grensesnittet med koblingen der en bruker vil kunne laste ned CSV-filen, fortsetter vi nå å skrive Angular-koden som inneholder dataene som skal lastes ned, og bind deretter den med HTML-kontrollene.

Vi gjør deretter CSV tilgjengelig for nedlasting på klientsiden.

app.js, initialiser Angular app og definer CsvCtrl kontrolleren.

'bruk streng'; / * App Module * / var app = angular.module ("myApp", []); 

Deretter definerer du prøvedataene i JSON og konverterer det til en CSV-fil ved hjelp av Papa Parse-modulen.

app.controller ("CsvCtrl", ["$ scope", "$ q", funksjon ($ omfang, $ q) var clearAlerts = function () $ scope.error = , $ scope.warning = null ; $ scope.download = function () var a = document.createElement ("a"); var json_pre = '["Referanse": "1", "Fornavn": "Lauri", "Last_name": "Amerman " "Dob": "1980", "Sex": "F",  "Reference": "2", "First_Name": "Rebbecca", "last_name": "Bellon", "Dob":" 1977 " "Sex": "F",  "Reference": "3", "First_Name": "Stanley", "last_name": "Benton", "Dob": "1984", "Sex":" M "cs = cpa; csv = Papa.unparse (json_pre); hvis (window.navigator.msSaveOrOpenBlob) var blob = ny Blob ([decodeURIComponent (encodeURI (csv))], type:" text / csv; charset = utf -8; "); navigator.msSaveBlob (blob, 'sample.csv'); else a.href = 'data: vedlegg / csv; charset = utf-8,' + encodeURI (csv); = '_blank'; a.download = 'sample.csv'; document.body.appendChild (a); a.click ();]);

Laster opp og leser en CSV-fil

Her er Angular-funksjonen som laster opp og leser en CSV-fil.

app.controller ("CsvCtrl", ["$ scope", "$ q", funksjon ($ omfang, $ q) // ... resten av koden // Last opp og les CSV-funksjon $ scope.submitForm = funksjon skjema) clearAlerts (); var filename = document.getElementById ("bulkDirectFile"); hvis (filnavn.value.length < 1 ) ($scope.warning = "Please upload a file");  else  $scope.title = "Confirm file"; var file = filename.files[0]; console.log(file) var fileSize = 0; if (filename.files[0])  var reader = new FileReader(); reader.onload = function (e)  var table = $("") .css ('bredde', '100%'); var rader = e.target.result.split (" \ n "); for (var i = 0; i < rows.length; i++)  var row = $(""); varceller = rader [i] .split (", "); for (var j = 0; j < cells.length; j++)  var cell = $("
") .css ('border', '1px solid black'); cell.html (celler [j]); row.append (celle); table.append (rad); $ (" # dvCSV "). html ( "); $ ( "# DvCSV") føyer (tabell).; leser.readAsText (filnavn.files [0]); returner falsk; ]);

Her bekrefter vi om CSV er gyldig og ikke tom. Hvis den er tom eller ingen CSV-fil er lastet opp, gir vi brukeren en advarsel: "Last opp en fil." Hvis CSV er gyldig, konverterer vi dataene til et tabellformat og presenterer det som vist nedenfor.

Konverter en CSV-fil til JSON

I den siste delen av denne opplæringen konverteres CSV-dataene til JSON-format (et skjema som kan brukes av en API). Nedenfor er funksjonen som konverterer CSV-data til JSON. Vi vil kun skrive ut dataene til konsollen, siden vi ikke har en API for bruk av dataene.

app.controller ("CsvCtrl", ["$ scope", "$ q", funksjon ($ omfang, $ q) // ... // Konverter til JSON-funksjonen $ scope.add = function () var Tabell = dokument .getElementById ('Table'); var fil = document.getElementById ("bulkDirectFile") .filer [0]; $ ('loading'). show (); var allResults = []; Papa.parse (fil,  Last ned: true, header: true, skipEmptyLines: true, error: funksjon (feil, fil, inputElem, reason) , fullfør: funksjon (resultater) allResults.push (results.data); console.log ));]);

I funksjonen ovenfor får vi CSV-filen og bruker Papa Parse til å konvertere den til JSON. Den komplette koden i app.js er vist nedenfor.

Konklusjon

I dette innlegget så du hvordan du laster opp og laster ned CSV-data, og hvordan du analyserer CSV-data inn og ut av JSON.

Jeg håper denne opplæringen har hjulpet deg med å forstå hvordan du kan manipulere CSV-filer med Papa Parse-modulen og hvor kraftig det biblioteket er. Du kan eksperimentere med større filer for å se full funksjonalitet i Papa Parse-biblioteket.