Så här laddar du upp och laddar ner CSV-filer med AngularJS

I det här inlägget visas hur du laddar upp CSV-filer till AngularJS, läser data och konverterar sedan till JSON för bearbetning. Då ser du hur man gör det hela i omvänd och laddar ner en CSV-datadump från AngularJS.

CSV-filer föredras på grund av deras enkelhet. De stöds också allmänt av många typer av program och ger ett enkelt sätt att representera kalkylarkdata.

förutsättningar

Innan du börjar med denna handledning, kontrollera att du har Node.js installerat på din dator. Om du inte har det ännu, gå över till den officiella hemsidan och installera den.

Du bör också ha en grundläggande förståelse för följande tekniker:

  • html
  • CSS
  • JavaScript

Om du redan har Node.js installerat, kontrollera om du har de senaste versionerna av Nod och NPM.

nod -v npm -v

CSV-moduler i vinkel

Det finns flera sätt att manipulera CSV i Angular, och de inkluderar:

  • Papa Parse: Papa Parse är en kraftfull CSV-parser som kan analysera CSV-strängar i små och stora filer samt konvertera tillbaka till JSON. Vi kommer att använda det här biblioteket i den här handledningen.
  • csvtojson: Detta är ett nodpaket som också är enkelt att använda.
  • Filläsare: Det används för att läsa innehållet i filer med Fil eller Klick objekt att ange filen som ska läsas. Det här är emellertid inte ett effektivt sätt eftersom du fortfarande måste slinga igenom alla rader i CSV och sedan JSON.stringify resultaten.

Komma igång

Vårt mål är att kunna göra följande:

  • ladda ner en CSV-fil på klientsidan
  • ladda upp en CSV-fil
  • läs en CSV-fil
  • konvertera CSV-fildata till JSON för behandling

Vårt gränssnitt ska se ut så här:

Vi börjar först genom att skriva HTML-koden för gränssnittet som visas ovan.

Skapa en mapp som heter mitt projekt, CD in i projektmappen och skapa två filer: home.html och app.js.

mkdir my_project cd my_project touch home.html touch app.js

Eftersom vi använder Papa Parse-modulen, gå över till den officiella webbplatsen och hämta biblioteket. Därefter extrahera innehållet och spara papaparse.js och papaparse.min.js filer i din projektmapp. Din projektstruktur ska se ut så här:

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

Nedan är HTML-koden för att skapa vårt gränssnitt. Spara det som home.html.

        
BULK TOP UP
  1. Excel-filen ska innehålla tre kolumner
  2. Den första kolumnen innehåller Referens
  3. Den andra kolumnen innehåller Förnamn
  4. Den tredje kolumnen innehåller Efternamn
  5. Den andra kolumnen innehåller Födelsedatum
  6. Den tredje kolumnen innehåller Sexav personen

Kolumnrubrikerna ska vara Referens ,Förnamn ,Efternamn,Dob,Sex

En provfil finns tillgänglig för nedladdning



Din uppladdade csv-fil visas i en förhandsgranskning för Bekräftelse



Bekräfta filen som ska laddas upp och klicka på Fortsätt-knappen nedan

I koden ovan använder vi ng-app direktiv för att definiera vår ansökan. Vi lägger sedan till AngularJS och jQuery-biblioteken på vår webbsida, liksom resten av manusfilerna, dvs. app.js, papaparse.js, och papaparse.min.js.

Vi definierar sedan programmets kontroller och sedan binder HTML-kontrollerna till applikationsdata.

Hämta en CSV-fil

Eftersom vi redan har gränssnittet med länken där en användare kommer att kunna ladda ner CSV-filen fortsätter vi nu att skriva den Angular-kod som innehåller de data som ska hämtas och binda sedan den med HTML-kontrollerna.

Vi gör sedan CSV tillgängligt för nedladdning på klientsidan.

app.js, initiera Angular app och definiera CsvCtrl kontrollant.

använd strikt / * Appmodul * / var app = angular.module ("myApp", []); 

Definiera sedan provdata i JSON och konvertera den till en CSV-fil med hjälp av Papa Parse-modulen.

app.controller ("CsvCtrl", ["$ scope", "$ q", funktionen ($ scope, $ q) var clearAlerts = function () $ scope.error = , $ scope.warning = null ; $ scope.download = function () var a = document.createElement ("a"); var json_pre = '["Referens": "1", "Förnamn": "Lauri", "Senast namn": "Amerman " "Dob": "1980", "Sex": "F",  "Referens": "2", "förnamn": "Rebbecca", "LAST_NAME": "Bellon", "Dob":" 1977 " "Sex": "F",  "Referens": "3", "förnamn": "Stanley", "LAST_NAME": "Benton", "Dob": "1984", "Sex":" M var blob = nytt blob ([decodeURIComponent (encodeURI (csv))], typ: "text / csv; charset = utf -8; "); navigator.msSaveBlob (blob, 'sample.csv'); annat a.href = 'data: bilaga / csv; charset = utf-8,' + encodeURI (csv); = '_blank'; a.download = 'sample.csv'; document.body.appendChild (a); a.click ();]);

Ladda upp och läsa en CSV-fil

Här är vinkelfunktionen som laddar upp och läser en CSV-fil.

app.controller ("CsvCtrl", ["$ scope", "$ q", funktion ($ scope, $ q) // ... resten av koden // Ladda upp och läs CSV-funktion $ scope.submitForm = function blankett < 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 (" bredd "," 100% "); var rader = e.target.result.split (" \ n "); för (var i = 0; i < rows.length; i++)  var row = $(""); varceller = rader [i] .split (", "); för (var j = 0; j < cells.length; j++)  var cell = $("
") .css ('border', '1px solid black'); cell.html (celler [j]); row.append (cell); table.append (rad); $ (" # dvCSV "). html("); $ ( "# DvCSV") lägga (tabell). reader.readAsText (filnamn.files [0]); returnera false; ]);

Här bekräftar vi om CSV är giltigt och inte tomt. Om det är tomt eller ingen CSV-fil har laddats upp, ger vi användaren ett varningsmeddelande: "Var god ladda upp en fil." Om CSV är giltigt konverterar vi data till ett tabellformat och presenterar det enligt nedan.

Konvertera en CSV-fil till JSON

I den sista delen av denna handledning konverteras CSV-data till JSON-format (ett formulär som kan konsumeras av ett API). Nedan är den funktion som konverterar CSV-data till JSON. Vi kommer endast skriva ut data till konsolen eftersom vi inte har ett API för att konsumera data.

app.controller ("CsvCtrl", ["$ scope", "$ q", funktionen ($ scope, $ q) // ... // Konvertera till JSON-funktionen $ scope.add = function () var Tabell = dokument .getElementById ('Table'); Var file = document.getElementById ("bulkDirectFile") .filer [0]; $ ('loading'). Visa (); var allResults = []; Papa.parse download: true, header: true, skipEmptyLines: true, error: funktion (err, fil, inputElem, reason) , komplett: funktion (resultat) allResults.push (results.data); console.log ));]);

I funktionen ovan får vi CSV-filen och använder Papa Parse för att konvertera den till JSON. Den fullständiga koden i app.js visas nedan.

Slutsats

I det här inlägget såg du hur man laddar upp och laddar ner CSV-data och hur man analyserar CSV-data till och från JSON.

Jag hoppas att denna handledning har hjälpt dig att förstå hur man kan hantera CSV-filer med Papa Parse-modulen och hur kraftfullt det här biblioteket är. Känn dig fri att experimentera med större filer för att se Papa Parse-bibliotekets fullständiga funktionalitet.