Я делаю приложение в Nodejs с использованием модулей express и node-xlsx, и я хочу, чтобы пользователь мог загрузить файл xlsx (который должен иметь определенный формат из двух столбцов), а затем сервер читает его и что-то делает с каждой строкой файла.
(Пример моего тестового файла, соответственно столбцы A и B):
Johny Wilson | jonhny@email.com
Andrew Jehnsen | andrew@example.com
Billy Soon | billy@mail.com
Для этого я решил использовать модуль node-xlsx, который после прочтения файла с этим кодом:
var xlsx = require('node-xlsx');
router.post('/enviar', upload.single("lista"),(req, res, next) =>{
//dir is the path of the xlsx file
const workSheetsFromFile = xlsx.parse(dir);
res.send(workSheetsFromFile);
});
возвращает объект, который выглядит следующим образом:
[
{
"name": "Hoja1",
"data": [
[
"Johny Wilson",
"jonhny@email.com"
],
[
"Andrew Jehnsen",
"andrew@example.com"
],
[
"Billy Soon",
"billy@mail.com"
]
]
}
]
Как видите, модуль возвращает данные всего файла, включая данные листа (в данном случае только один), я хочу получить доступ только к массиву «data», который содержит ключи и значения для их обработки.
Я уже пытался зациклить массив данных с помощью:
workSheetsFromFile.data.forEach((element) =>{
console.log(element);
});
и
workSheetsFromFile[data].forEach((element) =>{
console.log(element);
});
и
workSheetsFromFile['data'].forEach((element) =>{
console.log(element);
});
но все они просто отправляют мне сообщение об ошибке типа «Невозможно прочитать свойство forEach of undefined» или «данные не определены»: (
Пока что с этими несколькими строками кода я собирался перебрать массив данных и напечатать каждую пару ключей и значений, поэтому, как только это будет исправлено, внутри этого цикла обрабатывают каждый ключ и значение для отправки автоматических писем.