# node读取Excel
通过使用 node-xlsx
,读写Excel
背景:
根据下图,填入字段
需求:
编写脚本:
var fs = require("fs");
var xlsx = require("node-xlsx");
var sheets = xlsx.parse("./t_doctor.xlsx"); // 文件路径
let newData = [];
let rowNum = 0;
// 字典
let mapArr = [
{
key: "抑郁",
value: "11",
},
{
key: "焦虑",
value: "10",
},
{
key: "睡眠障碍",
value: "9",
},
{
key: "情感障碍",
value: "8",
},
{
key: "亲密关系",
value: "7",
},
{
key: "儿童青少年期",
value: "6",
},
{
key: "老年期",
value: "5",
},
{
key: "精神疾病",
value: "4",
},
{
key: "内科",
value: "3",
},
{
key: "骨科",
value: "2",
},
{
key: "妇科",
value: "1",
},
];
let sheetResult = sheets[0].data; // 第一个sheet
sheetResult.forEach(function (row) { // 遍历每一行
let item = row[12];
if (typeof item === "string") {
let tags = item.split(",");
let strList = [];
tags.forEach((tagItem, index) => {
console.log(`病情${index + 1}:`, tagItem);
mapArr.find((mapItem) => {
if (mapItem.key == tagItem) {
console.log("匹配:", mapItem.value);
strList.push(mapItem.value);
}
});
});
let newStr = strList.join(",");
console.log("写入值:", newStr);
row[13] = newStr;
rowNum++;
newData.push(row);
console.log("#### end ####\n");
}
});
console.log("行数:", rowNum);
sheets[0].data = newData; // 获取更改的副本
fs.writeFileSync("./new4.xlsx", xlsx.build(sheets), "binary"); // 新文件路径
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
匹配值,写入编码:
效果如下: