关于javascript:如何使用Node.js将Excel文件(XLSX)导入mysql

how to import excel file (XLSX) to mysql using nodejs

我试图将excel文件中的数据导入到mysql,就像使用nodejs的行冒号一样
有什么参考我可以学习或nodejs中的任何模块,我的工作或任何示例代码

我在谷歌搜索但我见过只有mongodb和python的解决方案,


我想到的一些方法:

  • 以csv格式保存要导入的Excel工作表,然后将其导入mysql:cf。如何将CSV文件导入MySQL表
    到目前为止,这是最简单的方法,但是您可能会遇到引号,逗号和其他特质的麻烦。

  • 使用javascript excel解析器读取excel文件并直接使用mysql数据库中的更新代码执行:cf。 https://github.com/SheetJS/js-xlsx
    该选项更复杂,但如果您要复制许多文件,它允许您自动执行任务。


  • 我开发了一个插件来做到这一点。这是npm模块的链接:
    https://www.npmjs.com/package/xlsx-mysql

    和github链接:
    https://github.com/Rizwaan-Company/xlsx-mysql

    示例代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    const XLSXtoMYSQL = require('xlsx-mysql');

    var optionsZ = {
        mysql: {
            host: '127.0.0.1',
            user: 'root',
            database: 'test',
            password: 'password',
            port: '3306'
        },
        csv: {
            delimiter: '+'
        }
    }
    var locationZ = __dirname + '/file.xlsx';
    var waitT = 1000;


    XLSXtoMYSQL(locationZ,optionsZ,waitT);


    1.从表单上载csv文件。

    2.包括您的配置文件。

    看一下下面的代码。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    var express = require('express');
    var app = express();
    var bodyParser = require('body-parser');
    var path = require('path');
    var http = require('http');
    var formidable = require('formidable');
    var fs = require('fs');
    var csvParser = require('csv-parse');
    var cm = require('csv-mysql');
    var connection=require('./config');

    // Create application/x-www-form-urlencoded parser
    var urlencodedParser = bodyParser.urlencoded({ extended: false })

    app.use(express.static('public'));
    app.get('/csvupload.html', function (req, res) {
        res.sendFile(path.resolve("../view/csvupload.html"));
    })

    app.post('/csvfileupload', urlencodedParser, function (req, res) {

        if (req.url == '/csvfileupload') {
            var form = new formidable.IncomingForm();
            form.parse(req, function (err, fields, files)
            {
                var oldpath = files.filetoupload.path;
                var newpath = 'C:/xampp/htdocs/nodejs/mvc/csvupload/uploads/' + files.filetoupload.name;
                fs.rename(oldpath, newpath, function (err) {
                    if (err) throw err;
                    res.write('File uploaded and moved!');
                    res.end();
                });
                fs.readFile(oldpath, { encoding: 'utf-8' }, function(err, csvData) {

                    if (err)
                    {
                        console.log(err);
                    }


                    csvParser(csvData, { delimiter: ',' }, function(err, data) {
                        if (err)
                        {
                            console.log(err);
                        }
                        else
                        {      
                        console.log(data);    
                            var sql ="INSERT INTO customer (id,name,address,designation) VALUES ?";
                            connection.query(sql, [data], function(err) {
                            if (err) throw err;
                            conn.end();
                            });  

                        }
                    });
                });
            });

        }


    }).listen(8080);