javascript - 使用 Node 解析 XLSX 并创建 json

标签 javascript json node.js excel

我正在使用名为 js-xlsx 的包链接:https://github.com/SheetJS/js-xlsx
问题:如何解析 xlsx 并合并输出 json? Here is what the excel sheet looks like: 最后的 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"
   }
]  

test.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' } ]

关于javascript - 使用 Node 解析 XLSX 并创建 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39179709/

相关文章:

javascript - Angularjs 指令

mysql - 如何过滤JSON - mysql中的两个属性?

javascript - 将 Salvattore 集成到我的 Aurelia 应用程序中

javascript - Javascript "apply"函数在 window.external 扩展对象中不存在

javascript - 使用 Javascript、Jquery 将 XML 转换为 Json 对象

node.js - 用于多个 apache 虚拟主机的 Node api

javascript - Node JS - 从先前的实例或状态清除超时

javascript - Node.JS - 无法从 package.json 跨脚本导出环境变量

javascript - 以 Angular 将文本转换为html格式

javascript - JSON 参数大小限制