web-dev-qa-db-fra.com

Lecture d'un fichier Excel à l'aide de node.js

D'accord, j'utilise le module FileUploader pour transférer mon fichier d'angle à mon REST API:

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

Ceci est envoyé à la fonction POST suivante:

        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);
                });
        })

Mon objectif est maintenant de lire le fichier Excel, puis d’ajouter chaque ligne à ma base de données.

Cependant, je ne sais pas trop comment lire le fichier à partir de Node.js. J'ai débogué mon serveur et je ne pouvais pas trouver le fichier où que ce soit, mais l'API est appelée depuis mon application Angular.

Quelqu'un peut-il me pousser dans la bonne direction? :)

28
Marc Rasmussen

Quelques bibliothèques différentes analysent des fichiers Excel (.xlsx). Je vais énumérer deux projets que je trouve intéressants et qui méritent d’être approfondis.

Node-xlsx

Analyseur et constructeur Excel. C'est une sorte de wrapper pour un projet populaire JS-XLSX, qui est une implémentation javascript pure issue des spécifications Office Open XML. 

Page de projet node-xlsx 

Exemple d'analyse de fichier

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

Lisez, manipulez et écrivez des données et des styles de feuille de calcul sous XLSX et JSON. C'est un projet actif. Au moment de la rédaction du présent rapport, le dernier engagement datait d'il y a 9 heures. Je n'ai pas testé cela moi-même, mais l'API semble vaste avec beaucoup de possibilités.

Page de projet exceljs 

Exemple de code:

// 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());
55
aludvigsen

Vous pouvez également utiliser ce module de noeud appelé js-xlsx

1) Installer le module
npm install xlsx

2) Module d'importation + extrait de code

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);
24

installez exceljs et utilisez le code suivant,

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);
    }
});
2
Codemaker