js实现xlsx, xls转json

思路用前端页面提交数据 用node进行写入

数据的过滤逻辑在index.html中完成 node只进行写入操作

文件目录如下

js实现xlsx, xls转json_第1张图片

需要现在根目录下启动index.js

node index.js

默认端口号是8081

 

前端页面显示如下





    
    
    
    Document
    




    

转换后的文件保存在transform目录中

需要在json()和 xlsx()方法中把data过滤成自己需要的方式



index.js

const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const GenerateJsonFile =require('./src/generateJsonFile/generateJsonFile.js');
let genJsonFile = new GenerateJsonFile();
app.use(bodyParser.json({limit: '50mb'}));
app.use( bodyParser.urlencoded({ limit: '50mb', extended: true }));
// 创建 application/x-www-form-urlencoded 编码解析

app.use(express.static('public'));

app.get('/', function (req, res) {
   console.log(__dirname)
   res.sendFile( __dirname + "/" + "index.html" );
});

app.post('/generateJson',function (req, res) {
   genJsonFile.writeFile(req.body.data, req.body.filename);
   res.send({state: "success"})
});

let port = 8081; 
if(process.argv.length >2){
   for(let i = 2; i < process.argv.length -1; i++){
      if(process.argv[i] === '-p' ){
         if(typeof (process.argv[i+ 1] - 0 ) === 'number') port = process.argv[i+ 1];
         else throw new Error('port error');
      }
   }
}
var server = app.listen(port, function () {

  var host = server.address().address
  var port = server.address().port

  console.log("应用实例,访问地址为 http://%s:%s", host, port)

});

 generateJsonFile.js

const fs = require('fs');
class GenerateJsonFile {
    constructor(path, filename, options={ endcoding: 'utf-8' }) {
        this.path = path;
        this.options = options;
        this.filename = filename;
    }
    // readFile(path=this.path, filename=this.filename) {
    //     fs.readFile(path, (err, res) => {
    //         if (err) {
    //             throw new Error(err);
    //         }
    //         let data = JSON.parse(res.toString());
    //         data["d"].forEach(ele => {
    //             if (ele.p.tag) {
    //                 let tag = ele.p.tag.split('-');
    //                 let gas = tag[1].split('/');
    //                 let formatData = '';
    //                 gas.forEach((g, i) => {
    //                     formatData += tag[0] + '区' + gas[i] + '传感器' + tag[2] + '数据->' + gas[i] + ','
    //                 });
    //                 formatData = formatData.substring(0, formatData.length - 1);
    //                 if (ele.a) {
    //                     ele.a.bindData = formatData;
    //                 } else {
    //                     ele.a = {
    //                         "bindData": formatData
    //                     };
    //                 }
    //             }
    //         });
    //         this.writeFile(data, filename);
    //     });
    // }
    writeFile(data, filename=this.filename, format="json") {
        data = JSON.stringify(data)
        fs.writeFile(`./transform/${filename}.${format}`, data, this.options, callback);
        function callback(err) {
            if (err) {
                throw new Error(err);
            }
            console.log(`${filename}.${format} write successed`);
        }
    }

}
module.exports = GenerateJsonFile;

你可能感兴趣的:(node,js,html)