JavaScript (узел js) пропускает пустую ячейку при чтении файла Excel

1

Я выполняю небольшую задачу, чтобы прочитать лист 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);
 });

Заранее спасибо!!

  • 0
    Что делать, если в первой строке есть все значения, а во второй строке отсутствует какое-либо значение?
  • 0
    Я должен сказать, что в строках есть некоторые пропущенные значения. Я хочу показать, что поле пропущено, если оно пустое.
Показать ещё 3 комментария
Теги:
excel

1 ответ

1

Я столкнулся с той же проблемой, и, изучив библиотечную документацию, решением вышеупомянутой проблемы была передача необязательного параметра в функцию XLSX.readFile.

т.е. меняется

из: var workbook = XLSX.readFile('customer.xlsx');

в: var workbook = XLSX.readFile('customer.xlsx', {sheetStubs: true});

Параметр sheetStubs в необязательном объекте позволяет библиотеке перечислять ячейки, которые по умолчанию игнорируются утилитами обработки данных библиотеки.

** Просмотрите следующие разделы документации библиотеки.

1) Параметры разбора 2) Типы данных (выделите тип данных z).

  • 0
    Вышесказанное позволило мне по крайней мере получить доступ к остальной части объекта json, за исключением его неопределенных ячеек, без добавления этого массива мой конец просто заканчивался бы на первом пустом элементе. Мне нужно обновить элемент сейчас, чтобы иметь возможность извлекать пустые ячейки «значения». До сих пор еще одной важной частью было использование! Null в моей функции фильтра, на которую ссылается github.com/SheetJS/js-xlsx/issues/139#issuecomment-390754486 . Мой массив все еще возвращается без значений для объектов из пустого значения. Надеюсь, что это помогает кому-то.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню