Javascript 使用node.js读取Excel文件

Javascript 使用node.js读取Excel文件,javascript,angularjs,node.js,import-from-excel,Javascript,Angularjs,Node.js,Import From Excel,好的,我正在使用FileUploader模块将我的文件从angular上传到我的RESTAPI: var uploader = $scope.uploader = new FileUploader({ url: api.getUrl('uploadCompetence',null) }); 这将发送到以下POST功能: router.route('/api/uploadCompetence') .post(function (req, res) {

好的,我正在使用
FileUploader
模块将我的文件从angular上传到我的
RESTAPI

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
文件,然后将每一行添加到我的数据库中

但是,我不太确定如何从
Node.js
读取该文件。我已经调试了服务器,除了从我的
Angular
应用程序调用api之外,在任何地方都找不到该文件


有人能把我推向正确的方向吗?:)

有几个不同的库在解析Excel文件(.xlsx)。我将列出两个我觉得有趣和值得研究的项目

节点xlsx Excel解析器和生成器。它是一种流行项目的包装器,该项目是Office Open XML规范中的纯javascript实现

解析文件的示例

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
卓越 将电子表格数据和样式读取、操作和写入XLSX和JSON。这是一个活跃的项目。在撰写本文时,最近一次提交是在9小时前。我自己还没有测试过,但是api看起来非常广泛,有很多可能性

代码示例:

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

安装“spread_sheet”节点模块,它将从本地电子表格添加和获取行

您还可以使用名为

1) 安装模块
npm安装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);

安装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);
    }
});
var Excel=require('exceljs');
var wb=new Excel.Workbook();
var path=require('path');
var filePath=path.resolve(_dirname,'sample.xlsx');
readFile(filePath).then(function()){
var sh=wb.getWorksheet(“表1”);
sh.getRow(1).getCell(2).value=32;
writeFile(“sample2.xlsx”);
console.log(“第3行|单元格-2-”+sh.getRow(3.getCell(2.value));
console.log(sh.rowCount);
//获取所有行数据[第1列和第2列]
对于(i=1;i有用链接

您可以使用npm

在这方面,, 您可以指定JSON模式XLSX转换为JSON格式

const readXlsxFile = require('read-excel-file/node');

const schema = {
    'Segment': {
        prop: 'Segment',
        type: String
    },
    'Country': {
        prop: 'Country',
        type: String
    },
    'Product': {
        prop: 'Product',
        type: String
    }
}

readXlsxFile('sample.xlsx', { schema }).then(({ rows, errors }) => {
    console.log(rows);
});

excel是什么意思?分号分隔的CSV文件或.xlsx文件?今天偶然发现:@aludvigsen xlsx但我不完全确定它是否真的发送了文件,我可以在哪里检查?你知道吗?我在我的一个项目中使用过。非常容易使用。你将如何附加?非常糟糕的样式支持。@charita请帮助我重试在每个数组中设置头列或空列值。它不适用于最近创建的文件或同时创建和读取。也不适用于二进制文件excel type.XLSX.readFile(“最近创建的\u excel文件路径”);我想将此数据添加到mongo DB。如何操作?不支持在表格中间插入新行并合并单元格。举个例子可以帮助回答此问题
const readXlsxFile = require('read-excel-file/node');

const schema = {
    'Segment': {
        prop: 'Segment',
        type: String
    },
    'Country': {
        prop: 'Country',
        type: String
    },
    'Product': {
        prop: 'Product',
        type: String
    }
}

readXlsxFile('sample.xlsx', { schema }).then(({ rows, errors }) => {
    console.log(rows);
});