Search code examples
angularjshtmlcsvangular-directive

How to read csv file content in AngularJS?


I want to read a csv file and get its content by using AngularJS and HTML5. I want to put the content of the csv file in $scope.

I have this code in my html

 <table align="center" >
            <tr class="borderless">
                <td>Choose .csv file</td>
                <td><input type="file" name="readCsvFile" id="readCsvFile" accept=".csv"> </td>
                <td><input type="button" value="Upload" ng-click="uploadCsvFile()"></td>
            </tr>
 </table>

Solution

  • with a custom directive:

    app.directive('fileReader', function() {
      return {
        scope: {
          fileReader:"="
        },
        link: function(scope, element) {
          $(element).on('change', function(changeEvent) {
            var files = changeEvent.target.files;
            if (files.length) {
              var r = new FileReader();
              r.onload = function(e) {
                  var contents = e.target.result;
                  scope.$apply(function () {
                    scope.fileReader = contents;
                  });
              };
    
              r.readAsText(files[0]);
            }
          });
        }
      };
    });
    

    http://plnkr.co/edit/eeQbR65oE8iljm7ueGhX?p=preview