这是测试表格:
这是最后需要的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” } ]
问题:如何实现将Unit和Worker中的内容组成一个数组并塞进Number为1的json中?
这是目前的代码:
var XLSX = require(‘xlsx’); var workbook = XLSX.readFile(‘测试.xlsx’); var sheet_name_list = workbook.SheetNames; sheet_name_list.forEach(function(y) { var worksheet = workbook.Sheets[y]; if (y == ‘Sheet1’) { var headers = {}; var data = []; //包中定义:z就是单元格的编号,如:A1,B2 for (z in worksheet) { if (z[0] === ‘!’) continue; //(0,1)列col的字母编号:A-Z, (1)行数row:1、2、3… var col = z.substring(0, 1); var row = parseInt(z.substring(1)); var value = worksheet[z].v; //保存中文字段名 if (row == 4) { headers[col] = value; continue; }
if (!data[row]) data[row] = {}; data[row][headers[col]] = value; }
data.shift(); data.shift(); console.log(data);
} else { console.log(false) }
});
目前代码实现结果:
有人有思路吗?
泪流满面啊,终于看到一个遇到一样问题的, 思路一,拆分单元格,在填充空值,2步完成 思路二,重头到尾,遍历这个二维数组,填满它, 1,找出数组的大小,arr[x][y] ,x已知,遍历出y
- 建一个上述大小的数组 arr[x][y] ,把已有的数据插进去
- 遍历的到的数组,添充空值 arr[x][y]=arr[x][y-1] 得到你要的数组
@bqxu 听说过csv这种格式吗。。。可以抄微软啊 为啥要用json呢。。。
1,2,3,4,5,6
1,2,3,4,5,6
1,2,,,5,6
1,,,,5,6
1,,,,5,6
1,,,,5,6
1,,,,5,6
1,2,3,4,5,6
1,2,3,4,5,6
1,2,3,4,5,6
@bqxu 哈哈,我刚要上来写解法,还以为没人回了呢,感谢回复,顺便握爪,只有解这种表的人才知道痛苦啊!!真实数据是17个字段,17啊,其中15个字段可能为空或有值! 我是跟思路一有些类似,合并后的单元格只有一行有值,于是加个判断,如果剩下的行数没值,就将前一个单元格的值赋给空单元格,然后再根据这个相同的属性判断是父子元素,再做剩下的json数组操作
@CarlosRen 一开始就是准备弄个json给前端用的,csv也没有接触过所以没考虑过,我去看看
@CarlosRen 用过csv ,不过还是习惯json,😁
@NextZeus mark
@bqxu 我已经用这个库经历了两个项目了 , 还是很方便的, 有些东西自己也可以设置,修改他的库文件
@NextZeus 不错哦,我看看要不要替换