#javascript #html #excel
Вопрос:
Я использую библиотеку файлов read-excel для анализа данных exceldata для дальнейшей обработки по следующей ссылке: https://www.npmjs.com/package/read-excel-file
Я не думаю, что эта библиотека учитывает тип данных исходного excel при импорте.
Я установил тип данных листа Excel в Текст, чтобы убедиться, что все импортировано в виде строки, а затем я перейду оттуда.
Проблема возникает, когда некоторые ячейки содержат числа в виде строк, разделенных запятой, а не точкой (немецкая система). Несмотря на то, что ячейка имеет значение примерно (22,8), библиотека анализирует ее как (22,8) с типом данных double. Однако, когда я добавляю любой другой нечисловой символ, он правильно импортирует его в виде строки.
например:
| Excel |read-excel-file|
------------ |--------------
|22,8 (text)|22.8 (double)|
|A22,8 (text)|A22,8 (string)|
|22,,8 (text)|22,,8 (string)|
Я не знаю, что здесь происходит, но я не уверен, что это проблема с системой счисления, потому что в третьем примере при добавлении второй запятой она импортируется в виде строки с сохранением запятых.
Я пишу код для safari 5. Компьютер и система Excel-немецкие. Любая помощь будет очень признательна!
Это фрагмент Javascript, который я использую:
var input = document.getElementById('excelInput');
input.addEventListener('change',function(){
readXlsxFile(input.files[0]).then(function(data) {
// saving the names of the attributes from excel in a variable
// null values are deleted
excelData = data;
var excelAttributes_unfiltered = excelData[0];
excelAttributes_options = excelAttributes_unfiltered.filter(function(el){ return el != null});
});
Комментарии:
1. Можете ли вы попробовать изменить одну из ячеек в файле excel с немецкой числовой нотацией на американскую числовую нотацию, т. Е. с 22,8 на 22,8, а остальные ячейки оставить в немецкой нотации, затем импортировать и посмотреть, как библиотека привела это измененное значение?
2. Я уже это сделал. Неважно, является ли обозначение запятой или точкой, библиотека примет его как точку с двойным типом данных, если ячейка не содержит никаких нечисловых значений. Это похоже на то, как библиотека автоматически определяет, что это должно быть число, независимо от типа данных ячейки в excel, а затем импортирует его с помощью точечной записи.
3. Excel действительно добавляет информацию о типе в столбцы, но странно, что библиотека меняет обозначение ЕС на американское в столбце смешанного типа. Попробуйте задать тип данных столбца как текст в Excel, затем импортируйте. Это должно оставить данные столбца как есть (со смешанными числовыми данными), если нет, то в библиотеке может быть ошибка.
4. Столбец не является смешанным типом. Тем не менее я попытался сделать тип данных в виде текста, а затем попытался сделать тип данных всего листа Excel в виде текста. Оба не работали, и библиотека по-прежнему импортировала числовые строки (22,8—> строка) в качестве значения типа числа с точкой вместо запятой (22,8 —>> двойной)
5. Если вы задали тип данных столбца как текст в excel, и он по-прежнему импортирует строку с числами, разделенными запятой, как двойные, заменив запятую точкой, то это ошибка в библиотеке. С благими намерениями, но, тем не менее, ошибка. Сообщите об этом авторам.