>

알겠습니다. FileUploader 를 사용하고 있습니다.  각도에서 내 REST API 로 파일을 업로드하는 모듈 :

var uploader = $scope.uploader = new FileUploader({
    url: api.getUrl('uploadCompetence',null)
});

이것은 다음 POST 에 전송됩니다  기능 :

       router.route('/api/uploadCompetence')
        .post(function (req, res) {
        // This is where i want to read the file
            var competence = Competence.build(req.body.location);
            competence.add(function (success) {
                    res.json({message: 'quote created!'});
                },
                function (err) {
                    res.status(err).send(err);
                });
        })

이제 목표는 excel 를 읽는 것입니다.  파일을 만든 다음 각 행을 내 데이터베이스에 추가하십시오.

그러나 pyzwyz에서 파일을 읽는 방법을 잘 모르겠습니다.  나는 내 서버를 디버깅하고 어디에서나 파일을 찾을 수 없지만 API는 내 Node.js 에서 호출됩니다.  응용 프로그램

누구든지 나를 올바른 방향으로 밀 수 있습니까? :)

Angular
  • 답변 # 1

    Excel 파일 (.xlsx)의 구문 분석을 수행하는 라이브러리는 몇 가지가 있습니다. 흥미롭고 살펴볼만한 두 가지 프로젝트를 나열하겠습니다.

    노드 -xlsx

    엑셀 파서 및 빌더. 인기있는 프로젝트JS-XLSX의 래퍼입니다. Office Open XML 사양에서 순수한 자바 스크립트로 구현되었습니다.

    node-xlsx 프로젝트 페이지

    파일 파싱 예제

    var xlsx = require('node-xlsx');
    var obj = xlsx.parse(__dirname + '/myFile.xlsx'); // parses a file
    var obj = xlsx.parse(fs.readFileSync(__dirname + '/myFile.xlsx')); // parses a buffer
    
    
    ExcelJS

    XLSX와 JSON으로 스프레드 시트 데이터와 스타일을 읽고 조작하고 씁니다. 활발한 프로젝트입니다. 최신 커밋을 작성하는 시점은 9 시간 전이었습니다. 나는 이것을 직접 테스트하지는 않았지만 API는 많은 가능성으로 광범위하게 보입니다.

    exceljs 프로젝트 페이지

    코드 예 :

    // read from a file
    var workbook = new Excel.Workbook();
    workbook.xlsx.readFile(filename)
        .then(function() {
            // use workbook
        });
    // pipe from stream
    var workbook = new Excel.Workbook();
    stream.pipe(workbook.xlsx.createInputStream());
    
    

  • 답변 # 2

    이 노드 모듈 인 js-xlsx를 사용할 수도 있습니다
    1) 설치 모듈
    npm install xlsx
    2) 가져 오기 모듈 + 코드 스 니펫

    var XLSX = require('xlsx')
    var workbook = XLSX.readFile('Master.xlsx');
    var sheet_name_list = workbook.SheetNames;
    var xlData = XLSX.utils.sheet_to_json(workbook.Sheets[sheet_name_list[0]]);
    console.log(xlData);
    
    

  • 답변 # 3

    exceljs를 설치하고 다음 코드를 사용하십시오

    var Excel = require('exceljs');
    var wb = new Excel.Workbook();
    var path = require('path');
    var filePath = path.resolve(__dirname,'sample.xlsx');
    wb.xlsx.readFile(filePath).then(function(){
        var sh = wb.getWorksheet("Sheet1");
        sh.getRow(1).getCell(2).value = 32;
        wb.xlsx.writeFile("sample2.xlsx");
        console.log("Row-3 | Cell-2 - "+sh.getRow(3).getCell(2).value);
        console.log(sh.rowCount);
        //Get all the rows data [1st and 2nd column]
        for (i = 1; i <= sh.rowCount; i++) {
            console.log(sh.getRow(i).getCell(1).value);
            console.log(sh.getRow(i).getCell(2).value);
        }
    });
    
    

  • 답변 # 4

    유용한 링크

    https://ciphertrick.com/read-excel-files-convert-json-node-js/

    var express = require('express'); 
        var app = express(); 
        var bodyParser = require('body-parser');
        var multer = require('multer');
        var xlstojson = require("xls-to-json-lc");
        var xlsxtojson = require("xlsx-to-json-lc");
        app.use(bodyParser.json());
        var storage = multer.diskStorage({ //multers disk storage settings
            destination: function (req, file, cb) {
                cb(null, './uploads/')
            },
            filename: function (req, file, cb) {
                var datetimestamp = Date.now();
                cb(null, file.fieldname + '-' + datetimestamp + '.' + file.originalname.split('.')[file.originalname.split('.').length -1])
            }
        });
        var upload = multer({ //multer settings
                        storage: storage,
                        fileFilter : function(req, file, callback) { //file filter
                            if (['xls', 'xlsx'].indexOf(file.originalname.split('.')[file.originalname.split('.').length-1]) === -1) {
                                return callback(new Error('Wrong extension type'));
                            }
                            callback(null, true);
                        }
                    }).single('file');
        /** API path that will upload the files */
        app.post('/upload', function(req, res) {
            var exceltojson;
            upload(req,res,function(err){
                if(err){
                     res.json({error_code:1,err_desc:err});
                     return;
                }
                /** Multer gives us file info in req.file object */
                if(!req.file){
                    res.json({error_code:1,err_desc:"No file passed"});
                    return;
                }
                /** Check the extension of the incoming file and 
                 *  use the appropriate module
                 */
                if(req.file.originalname.split('.')[req.file.originalname.split('.').length-1] === 'xlsx'){
                    exceltojson = xlsxtojson;
                } else {
                    exceltojson = xlstojson;
                }
                try {
                    exceltojson({
                        input: req.file.path,
                        output: null, //since we don't need output.json
                        lowerCaseHeaders:true
                    }, function(err,result){
                        if(err) {
                            return res.json({error_code:1,err_desc:err, data: null});
                        } 
                        res.json({error_code:0,err_desc:null, data: result});
                    });
                } catch (e){
                    res.json({error_code:1,err_desc:"Corupted excel file"});
                }
            })
        }); 
        app.get('/',function(req,res){
            res.sendFile(__dirname + "/index.html");
        });
        app.listen('3000', function(){
            console.log('running on 3000...');
        });
    
    

  • 답변 # 5

    'spread_sheet'노드 모듈을 설치하면 로컬 스프레드 시트에서 행을 추가하고 가져옵니다

관련 자료

  • 이전 javascript - 사용자가 파일 다운로드를 수락 한 시점을 감지
  • 다음 python - 처음 몇 가지 결과에 대한 텍스트 통찰력을 얻기 위해 검색어를 작성하고 Google에서 검색하는 방법