Я выполняю небольшую задачу, чтобы прочитать лист Excel и сохранить в формате json. Код, который я использовал, хорошо работает, когда присутствуют все значения ячейки, если есть какая-либо пустая ячейка, она пропускает эту ячейку.
Результат, который я хочу, если какое-либо значение не представлено (в моем случае я пропустил номер телефона cust2), приведен ниже.
[ { cust_name: 'Ben', cust_city: 'Street1', cust_country: 'country1', phno: 1 }, { cust_name: 'Ken', cust_city: 'street2', cust_country: 'country2' phno:}, { cust_name: 'Ron', cust_city: 'street3', cust_country: 'country3', phno: 3 } ]
Но выход, который я получил, - это
[ { cust_name: 'Ben', cust_city: 'Street1', cust_country: 'country1', phno: 1 }, { cust_name: 'Ken', cust_city: 'street2', cust_country: 'country2' }, { cust_name: 'Ron', cust_city: 'street3', cust_country: 'country3', phno: 3 } ]
Он пропустил phno
поданный за cust2.
Пожалуйста, помогите мне выяснить, что я должен изменить в своем коде, чтобы получить желаемый результат.
Мой код
var XLSX = require('xlsx');
var workbook = XLSX.readFile('customer.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);
});
Заранее спасибо!!
Я столкнулся с той же проблемой, и, изучив библиотечную документацию, решением вышеупомянутой проблемы была передача необязательного параметра в функцию XLSX.readFile.
т.е. меняется
из: var workbook = XLSX.readFile('customer.xlsx');
в: var workbook = XLSX.readFile('customer.xlsx', {sheetStubs: true});
Параметр sheetStubs в необязательном объекте позволяет библиотеке перечислять ячейки, которые по умолчанию игнорируются утилитами обработки данных библиотеки.
** Просмотрите следующие разделы документации библиотеки.
1) Параметры разбора 2) Типы данных (выделите тип данных z).