【问题标题】:Upload Excel using nodejs使用nodejs上传Excel
【发布时间】:2018-02-07 08:39:02
【问题描述】:

我正在上传一个 Excel 文件并插入到一个 mysql 表中。我的代码正在使用 Linux。但我希望它也应该与其他人一起运行,所以我预测 Xls 不起作用。

如何转换成 CSV 或任何其他方式,以便我们可以上传支持任何版本的 Excel 或 csv?

function getfileDetails(req, res) {
    var sampleFile, fileInfo = {};
        var date1=new Date();
         var currdatetime = date1.getFullYear()+"-"+(date1.getMonth()+1)+"-"+date1.getDate()+" "+date1.getHours()+":"+date1.getMinutes()+":"+date1.getSeconds();
        console.log(currdatetime);
    var MyData = [];
            if (!req.files) {
            res.send('No files were uploaded.');
            return;
          }   
          sampleFile = req.files.fileInputXLSX1;

        var datetimestamp = Date.now();

          console.log("Uploaded -- ",sampleFile);
          var fileExtn = sampleFile.name.split(".").pop();
          var extractedFilename = sampleFile.name.slice(0, sampleFile.name.lastIndexOf('.'));
          var userid=req.headers['userid'];
          var uploadFileName = extractedFilename+'_'+userid+'_'+datetimestamp+'.'+fileExtn;

          console.log("uploadFileName -- ",uploadFileName);
          fileInfo = {
            "name": uploadFileName,
            "mimetype": sampleFile.mimetype
          }
          // Use the mv() method to place the file somewhere on your server  
          sampleFile.mv(__dirname+'/Details/'+uploadFileName, function(err) {
            if (err) {
                res.status(500).send(err);
                }
                var parseXlsx = require('excel');
                parseXlsx(__dirname+'/Details/'+uploadFileName, function(err, data) {
                    if(err) throw err;          
                    // data is an array of arrays
                    else{
                        if(data!=null)
                    {
                        var queryString= "Truncate table `details`;"
                        connection.query(queryString, function(err,result){
                                        if(err) { 
                                            res.write(JSON.stringify(err));
                                                res.end();
                                                } else {
                                                    res.send('File uploaded!');
                                                        }
                                                });
                    }
                            for (var index = 1; index < data.length; index++) 
                            {
                                MyData.push(data[index][0],data[index][1],data[index][2],data[index][3], data[index][4], data[index][5],data[index][6],data[index][7],data[index][8],data[index][9]);
                                var queryString="INSERT INTO `details`(name,tname,fname,timestamp) VALUES ('"+data[index][0]+"','"+data[index][1]+"','"+data[index][2]+"','"+currdatetime+"')";
                                    connection.query(queryString, function(err,result){
                                        if(err) { 
                                            res.write(JSON.stringify(err));
                                                res.end();
                                                } else {
                                                    res.send('File uploaded!');
                                                        }
                                                });
                            }   

                        }
                });         
         if(err) {
           res.status(500);
            res.send(err);
               }
        });

}

请帮忙,我是 Node 新手。

【问题讨论】:

    标签: mysql node.js excel csv xls


    【解决方案1】:

    嘿,你能试试json2csv npm 模块吗?这将解决你的问题@TB.M

    【讨论】:

      【解决方案2】:

      这段代码运行良好,试试这个..

      var xlsx = require('node-xlsx');
          var fs = require('fs');
          var obj = xlsx.parse(__dirname + '/new.xls'); // parses a file
          var rows = [];
          var writeStr = "";
      
          //looping through all datarow
          for(var i = 0; i < obj.length; i++)
          {
              var dataRow = obj[i];
              //loop through all rows in the sheet
              for(var j = 0; j < dataRow['data'].length; j++)
              {
                      //add the row to the rows array
                      rows.push(dataRow['data'][j]);
              }
          }
      
          //creates the csv string to write it to a file
          for(var i = 0; i < rows.length; i++)
          {
              writeStr = writeStr + rows[i].join(",") + "\n";
          }
      
          //writes to a file, but you will presumably send the csv as a      
          //response instead
          fs.writeFile(__dirname + "/data.csv", writeStr, function(err) {
              if(err) {
                  return console.log(err);
              }
              console.log("data.csv was saved in the current directory!");
          });
      

      【讨论】:

      • 使用 npm npm install node-xlsx 安装 node-xlsx 然后将它与您的 excel 文件一起使用。
      • 我正在尝试,但在我的代码中它没有给出正确的输出..你能来聊天吗?
      • 不,我现在很忙,请不要介意,我们可以在 5 小时后交谈。
      • 检查它不处理值中的逗号,您需要添加双引号并转义包含双引号的值
      • 在问题中我已经给出了我的代码。我需要添加你的代码。我应该如何添加给定的代码。那没有发生。
      猜你喜欢
      • 2019-01-20
      • 2017-11-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-03
      • 2016-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多