将excel文件转换为nodejs中的json

我想通过使用这个api转换一个Excel文件到json:convert-json node api。

我能够在我的本地机器上,而不是在我的服务器上。 只有csv-to-json在本地和服务器上工作。 这是我的代码: https : //gist.github.com/debasreedash/33efd4473ba8b344a5ac

服务器在第一个console.log之后试图parsingexcel文件时崩溃。 这是它的样子: http : //imgur.com/lzUy8sc

我以为这是一个没有在服务器上的Excel驱动程序的问题,但下载和安装后也没有工作。 有没有人遇到过这个问题? 如果您需要更多信息,请告诉我。

使用此方法可以轻松实现undertsanding和parsing:

 npm install --save excel' var xls = require('excel'); xls('Sheet.xlsx', function(err, data) { if(err) throw err; // data is an array of arrays }); 

就像它说的那样,它返回的数据是一个数组数组。 我们希望它是JSON,以便我们可以随心所欲地做任何事情。

这是一个将数组数组转换为JSON的函数:

 function convertToJSON(array) { var first = array[0].join() var headers = first.split(','); var jsonData = []; for ( var i = 1, length = array.length; i < length; i++ ) { var myRow = array[i].join(); var row = myRow.split(','); var data = {}; for ( var x = 0; x < row.length; x++ ) { data[headers[x]] = row[x]; } jsonData.push(data); } return jsonData; }; 

然后:

 xlsx('tasks.xlsx', function(err,data) { if(err) throw err; //console.log(jsonDataArray(data)); console.log(JSON.stringify(convertToJSON(data))); //console.log(data); }); 

关注问题第一行的前半部分:如何将Excel转换为json。

假设:Excel电子表格是一个数据的正方形,其中第一行是对象键,其余行是对象值,所需的json是对象列表。

先前答案的改进:删除不必要的拆分和连接(不必要的,如果键或值包含逗号可能会导致无效转换),允许键中的虚线string暗示嵌套对象,coffeescript,写入文件。

虚线表示法:包含firstName,lastName,address.street,address.city,address.state,address.zip的关键行(0)将按行生成包含名和姓的文档以及名为address的embedded式文档地址。

如何设置对象属性(的..的对象属性)给定其在JavaScript中的string名称的VisioN分配函数?

首先,加载excel模块

 npm install excel --save-dev 

不优雅,只是得到'代码'

 fs = require 'fs' excel = require 'excel' FILES = [ {src: 'input.xlsx', dst: 'output.json'} ] # Assign values to dotted property names - set values on sub-objects assign = (obj, key, value) -> # Because we recurse, a key may be a dotted string or a previously split # dotted string. key = key.split '.' unless typeof key is 'object' if key.length > 1 e = key.shift() obj[e] = if Object.prototype.toString.call(obj[e]) is "[object Object]" then obj[e] else {} assign obj[e], key, value else obj[key[0]] = value # The excel module reads sheet 0 from specified xlsx file process = (src, dst) -> excel src, (err, data) -> throw err if err keys = data[0] rows = data[1..] result = [] for row in rows item = {} assign item, keys[index], value for value, index in row result.push item fs.writeFile dst, JSON.stringify(result, null, 2), (err) -> if err console.error("Error writing file #{dst}", err) else console.log "Updated #{dst}" process file.src, file.dst for file in FILES