1

ここから解決策の1つに従います。ソリューションはコンソールにうまくログアウトしますが、保存方法がわからないので、.json ファイルに読みやすいように見えます。ファイル システム モジュールを使用して、出力を .json に記録しようとしました。すべてを複数行で印刷する方法がわかりません。全部一行で出てきます。

var fs = require('fs');
var XLSX = require('xlsx');
var workbook = XLSX.readFile('test.xlsx');
var sheet_name_list = workbook.SheetNames;
sheet_name_list.forEach(function(y) {
    var worksheet = workbook.Sheets[y];
    var headers = {};
    var data = [];
    for(z in worksheet) {
        if(z[0] === '!') continue;
        //parse out the column, row, and value
        var col = z.substring(0,1);
        var row = parseInt(z.substring(1));
        var value = worksheet[z].v;

        //store header names
        if(row == 1) {
            headers[col] = value;
            continue;
        }

        if(!data[row]) data[row]={};
        data[row][headers[col]] = value;
    }
    //drop those first two rows which are empty
    data.shift();
    data.shift();
    //console.log(data);
    fs.writeFileSync("new.json", JSON.stringify(data), function(err) {
        if(err) {
            return console.log(err);
        }
    }); 
});

new.json の出力

[{"key":"AprilA45","Food":"Sandwich","yr":2017,"mo":"April" ...
4

2 に答える 2

1

これは、メソッドに追加の引数stringify、具体的にはspaceパラメーターを使用することで実現できます。

読みやすくするために出力 JSON 文字列に空白を挿入するために使用される String または Number オブジェクト。これが数値の場合、空白として使用する空白文字の数を示します。この数の上限は 10 です (これよりも大きい場合、値は 10 になります)。1 未満の値は、スペースを使用しないことを示します。これが文字列の場合、文字列 (文字列がそれより長い場合は文字列の最初の 10 文字) が空白として使用されます。このパラメーターが指定されていない (または null である) 場合、空白は使用されません。

これはあなたが望むものを示すブラウザベースの例です.最初のdivはあなたが現在得ているものです; 2番目のdivはあなたが望むものです:

let data = {"foo": ["bar", "baz"], "qux": "quux"};
document.getElementById("first").innerHTML = "<pre>" + JSON.stringify(data) + "</pre>";
document.getElementById("second").innerHTML = "<pre>" + JSON.stringify(data, null, 2) + "</pre>";
<div id="first"></div>
<div id="second"></div>

したがって、コードは次のようになります。

fs.writeFileSync("new.json", JSON.stringify(data, null, 2), function(err) {
    if(err) {
        return console.log(err);
    }
}); 
于 2017-06-29T14:54:35.423 に答える