Filereader read file using correct encoding when read as readAsArrayBuffer

前端 未结 1 1288
无人共我
无人共我 2020-12-10 09:47

I am working on reading .csv /xlsx file uploaded using javaScript and get the result as array containing each row . I was able to read the file and get data us

相关标签:
1条回答
  • 2020-12-10 10:45

    After going through lot of possible solutions i found that answer to the above question was to combine the above two methods. The first method for reading the xlsx files and second method for reading csv files. Also i have used an additional javaScript library called papaparse in the second method to solve the problem of reading data in each cell

    $scope.is_Hebrew = function($data){
    var position = $data.search(/[\u0590-\u05FF]/);
    return position >= 0;
    }
    
    // code for the new excel reader
    $scope.do_file =  function(files)
    {
        var config = {
        delimiter: "",  // auto-detect
        newline: "",    // auto-detect
        quoteChar: '"',
        escapeChar: '"',
        header: false,
        trimHeader: false,
        dynamicTyping: false,
        preview: 0,
        encoding: "",
        worker: false,
        comments: false,
        step: undefined,
        complete: undefined,
        error: undefined,
        download: false,
        skipEmptyLines: false,
        chunk: undefined,
        fastMode: undefined,
        beforeFirstChunk: undefined,
        withCredentials: undefined
        };
    
        $scope.fileContent  = [];
        var f = files[0];
        var fileExtension = f.name.replace(/^.*\./, '');
        if(fileExtension == 'xlsx')
        {
            var X = XLSX;
            var global_wb;
            var reader = new FileReader();
            reader.onload = function(e)
            {
                var data = e.target.result;
                global_wb = X.read(data, {type: 'array'});
                var result = {};
                global_wb.SheetNames.forEach(function(sheetName) {
                   var roa = X.utils.sheet_to_json(global_wb.Sheets[sheetName], {header:1});
                   if(roa.length) result[sheetName] = roa;
                });
                $scope.fileContent =  result["Sheet1"];
                if(!result["Sheet1"])
                {
                   $scope.fileContent =  result["contacts"].filter(function(el) { return typeof el != "object" || Array.isArray(el) || Object.keys(el).length > 0; });
                }
    
            };
            reader.readAsArrayBuffer(f);
    
        }
        else if(fileExtension == 'csv')
        {
        var reader = new FileReader();
        reader.onload = function(e)
        {
            var data = e.target.result;
            console.log(f);
            console.log($scope.is_Hebrew(data.toString()));
            if(!$scope.is_Hebrew(data.toString()))
            {
               reader.readAsText(f,'ISO-8859-8');   
            }
        };
    
        reader.readAsText(f);
        reader.onloadend = function(e){
            var c =  Papa.parse(reader.result,[ config])
            console.log(c);
            $scope.fileContent =  c["data"].filter(function(el) { return typeof el != "object" || Array.isArray(el) || Object.keys(el).length > 0; });
    
        };
    
        }
        else
        {
           alert("File Not supported!");
        }
    
    $scope.fileContent.push([]);
    };
    
    0 讨论(0)
提交回复
热议问题