2016-08-27 5 views
1

私はjs-xlsxというパッケージを使用しています。https://github.com/SheetJS/js-xlsx
質問:どのようにxlsxを出力してjsonを出力するかを解析できますか? Here is what the excel sheet looks like: 終わりではJSONは次のようになります。XLSXを解析してノードを持つ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; 

    } 

}); 

答えて

0
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' } ] 

を見てわかるように、数字は文字列に変換されます。数字を数字として保存するかどうかはわかりません。パパのパースでの回避策:

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' } ] 
+0

ありがとうございました! XLSX.utils.sheet_to_csvとXLSX.utils.sheet_to_jsonは非常に役に立ちますが、私は最後のjsonを{Worker ":[Lucy"、 "Jussa"、 "Peter"]}のようにしたいのですが、その作業者の名前は同じフィールド名。 – sogg

+0

@sogg申し訳ありません、あなたの質問が間違っています。私はそのようなファイルを読んだことはありません。 –

関連する問題