2017-02-22 42 views
0

Я работаю над приложением Meteor, используя пакет Node.js под названием «js_xlsx» из «SheetJS», созданный «SheetJSDev». Я использую этот пакет, чтобы преобразовать загруженный лист Excel в JSON в фоновом режиме, поэтому я могу сохранить его в своем MongoDB и использовать его, чтобы сделать некоторые причудливые классифицированные вещи в интерфейсе. Есть только одна проблема. Пакет пропускает столбцы с пустым заголовком, за исключением самого столбца с самым большим столбцом с пустым заголовком. Я уже понял, что пакет обрабатывает столбцы с пустым заголовком, но отлично, но поскольку ключи JSON должны быть уникальными, он сохраняет только последний столбец с пустым заголовком в объекте JSON.Как вы делаете js_xlsx для сохранения всех пустых заголовков?

Примеры:

Со всеми заголовками заполнены:

enter image description here

enter image description here

Как вы можете видеть, все работает хорошо, когда все заголовки заполнены.

С первым и 2-ой последним заголовком пустым:

enter image description here

enter image description here

Здесь вы видите, что вторая последняя колонку получает положить спереди, с «неопределенным» заголовком и первым столбец даже не там (потому что он перезаписывается вторым последним столбцом, потому что оба они имеют «undefined» в качестве своих ключей).

С первых 3 колонки и 2-го последнего заголовка пустым:

enter image description here

enter image description here

же материал, как с 3-го и 4-го изображения. Только последний столбец с пустым заголовком превратится в объект JSON.

Теперь я обрушился на исходный код и искал страницу GitHub и даже попросил Google помочь мне, без особых усилий.

То, что я хочу знать:

Как сделать js_xlsx процесс все столбцы с пустыми заголовками?

Ссылка на страницу GitHub для пакета:

https://github.com/SheetJS/js-xlsx

Любая помощь очень ценится!

ответ

0

I подозреваемый Ваша проблема в том, что по умолчанию функция SheetJto_json SheetJS (xlsx.js) полностью пропускает пустые ячейки. (там не было универсального «Как иметь дело с пустой ячейкой» ... они, к сожалению, отказались (imho), просто пропустить всю ячейку ... оставляя ваш JSON в руинах.) Учитывая, что они используют заголовки как ключи, так как вы сказали, что этот может не допустить получения всей колонки.

Вы можете изменить это поведение, указав значение defval в объекте параметров, который может быть необязательно передан этой функции.

Например:

filledOutJSON = XLSX.utils.sheet_to_json(worksheet,{"defval":"whatever_you_want"});

Обратите внимание, вы можете указать пустую строку, "", если вы хотите.

Вы можете указать другие параметры, указанные здесь: https://github.com/SheetJS/js-xlsx#json