解析XLSX并使用Node创建json
Parse XLSX and create json with Node
我使用的是js-xlsx包link:https://github.com/SheetJS/js-xlsx
问题:我如何解析合并输出json的xlsx ?下面是excel表格的样子:最后json应该是这样的:
[
{
"Nuber": 1,
"Department": "part1",
"Unit": ["check","second","cable"],
"BeginTime": "1/7:00",
"EndTime": "2/20:00",
"Worker": ["Lucy","Jussa","Peter"]
},
{
"Nuber": 2,
"Department": "part2",
"Unit": "check",
"BeginTime": "1/7:00",
"EndTime": "1/20:00",
"Worker": "Yu"
}
]
. js:
XLSX = require('xlsx');
var workbook = XLSX.readFile('test.xlsx');
var sheet_name_list = workbook.SheetNames;
sheet_name_list.forEach(function(y) { /* iterate through sheets */
var worksheet = workbook.Sheets[y];
for (z in worksheet) {
/* all keys that do not begin with "!" correspond to cell addresses */
if(z[0] === '!') continue;
}
});
var XLSX = require('xlsx');
var workbook = XLSX.readFile('iris_small.xlsx');
var sheetNames = workbook.SheetNames;
var sheetIndex = 1;
var df = XLSX.utils.sheet_to_json(workbook.Sheets[sheetNames[sheetIndex-1]]);
console.log(df);
给:
[ { Id: '1',
'Petal.Length': '1.4',
'Petal.Width': '0.2',
Species: 'setosa' },
{ Id: '2',
'Petal.Length': '1.4',
'Petal.Width': '0.2',
Species: 'setosa' },
{ Id: '3',
'Petal.Length': '1.3',
'Petal.Width': '0.2',
Species: 'setosa' },
{ Id: '4',
'Petal.Length': '3.9',
'Petal.Width': '1.4',
Species: 'versicolor' },
{ Id: '5',
'Petal.Length': '3.5',
'Petal.Width': '1',
Species: 'versicolor' },
{ Id: '6',
'Petal.Length': '4.2',
'Petal.Width': '1.5',
Species: 'versicolor' },
{ Id: '7',
'Petal.Length': '5.4',
'Petal.Width': '2.3',
Species: 'virginica' },
{ Id: '8',
'Petal.Length': '5.1',
'Petal.Width': '1.8',
Species: 'virginica' } ]
可以看到,数字被转换为字符串。我不知道是否有保留数字作为数字的选项。使用Papa Parse的变通方法:
var Papa = require('babyparse');
var csv = XLSX.utils.sheet_to_csv(workbook.Sheets[sheetNames[sheetIndex-1]]);
var json = Papa.parse(csv,
{
header: true,
skipEmptyLines: true,
dynamicTyping: true
}
);
console.log(json.data);
现在的结果是:
[ { Id: 1,
'Petal.Length': 1.4,
'Petal.Width': 0.2,
Species: 'setosa' },
{ Id: 2,
'Petal.Length': 1.4,
'Petal.Width': 0.2,
Species: 'setosa' },
{ Id: 3,
'Petal.Length': 1.3,
'Petal.Width': 0.2,
Species: 'setosa' },
{ Id: 4,
'Petal.Length': 3.9,
'Petal.Width': 1.4,
Species: 'versicolor' },
{ Id: 5,
'Petal.Length': 3.5,
'Petal.Width': 1,
Species: 'versicolor' },
{ Id: 6,
'Petal.Length': 4.2,
'Petal.Width': 1.5,
Species: 'versicolor' },
{ Id: 7,
'Petal.Length': 5.4,
'Petal.Width': 2.3,
Species: 'virginica' },
{ Id: 8,
'Petal.Length': 5.1,
'Petal.Width': 1.8,
Species: 'virginica' } ]
相关文章:
- 如何在不编写样板代码的情况下在Node中创建可重用函数
- 为node.js创建一个动态的restful api
- 如何在node.js中创建自己的脚本
- 如何调用一个函数,其名称是通过在node.js中组合一些变量来动态创建的
- Node.js创建一个模块来收集内存(ram)信息
- Node.js-无法删除使用createWriteStream创建并写入的文件
- 在 Node.js 视图中创建 OpenLayers 映射
- 如何在Node.js中从数组中的值创建对象
- 与node.js的get/post混淆,并试图创建一个新页面
- 如何在Node.js中创建TLS隧道
- 如何创建一个考虑时区Node.JS/javascript的JS日期对象
- 有没有办法为 node.js 的 golang 库创建绑定
- 使用 Node.js 创建定期 Outlook 日历事件
- Node JS http-proxy - 创建的 URL 存在问题
- 如何在node中编写事件发射器.js让你创建一个函数“myFunction”,然后在运行时调用成功或失败
- 使用 Node.js 创建反向代理的更优雅的方式
- 如何在 node.js 中创建和运行文件
- 如何以特定用户的身份使用Node创建子进程
- 用Node创建的图像响应GET请求
- 解析XLSX并使用Node创建json