首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用js-xlsx将JSON输出到多行

用js-xlsx将JSON输出到多行
EN

Stack Overflow用户
提问于 2017-05-11 18:03:41
回答 2查看 2.6K关注 0票数 1

我遵循here的解决方案之一。该解决方案很好地登录到控制台,但我不知道如何保存,因此它看起来很容易读到.json文件。我尝试使用文件系统模块将输出记录到.json。我不知道怎么把它打印成多行。都排在一条线上。

代码语言:javascript
复制
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

代码语言:javascript
复制
[{"key":"AprilA45","Food":"Sandwich","yr":2017,"mo":"April" ...
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-29 14:54:35

可以通过使用stringify方法的附加参数(特别是space参数)来实现这一点:

用于在输出的JSON字符串中插入空格的字符串或数字对象,用于可读性。如果这是一个数字,则表示要用作空白的空格字符的数量;该数字的上限为10 (如果它更大,则值仅为10)。小于1的值表示不应使用任何空间。如果这是一个字符串,则该字符串(或字符串的前10个字符,如果长度大于该字符串)用作空白。如果未提供此参数(或为null),则不使用空白。

下面是一个基于浏览器的示例,它显示了您想要的东西--第一个div是您当前得到的;第二个div是您想要的:

代码语言:javascript
复制
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>";
代码语言:javascript
复制
<div id="first"></div>
<div id="second"></div>

所以你的代码是:

代码语言:javascript
复制
fs.writeFileSync("new.json", JSON.stringify(data, null, 2), function(err) {
    if(err) {
        return console.log(err);
    }
}); 
票数 1
EN

Stack Overflow用户

发布于 2017-05-11 18:44:50

使用Array.map和Array.join。

//行结束字符 const =需要量(‘os’).EOL; // Str酸化数组中的每个对象,并使用换行符连接数组 data = data.map(obj => JSON.stringify(obj)).join(EOL); //将数据写入文件 Fs.writeFileSync(.);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43922646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档