Чтение и вывод файла excel в браузере

156
31 марта 2019, 10:20

Изучаю frontend есть такой index.js хочу в нем прочитать файл excel

import xlsx from 'node-xlsx'
let workBook = xlsx.parse('./resources/goods.xlsx');
ReactDOM.render(<App />, document.getElementById('root'));

Но при старте в браузере выводится такое:

TypeError: _fs.readFileSync is not a functionread_binary

На скрине подробнее, помогите плиз понять почему и как с этим справиться?

Answer 1

Node.js сам по себе используется преимущественно на сервере и совершенно точно не предназначен для браузера. Так что если вы хотите выводить excel в браузере с помощью библиотеки node-xlsx, то, помимо вашего фронтенда на React, вам необходим сервер на Node.js с установленным node-xlsx, т.к. этот модуль работает только на сервере.

Впрочем, в общем случае для задачи вывода excel в браузере сервер необязателен. Так, в состав node-xlsx входит библиотека js-xlsx, которая как раз может работать без сервера. js-xlsx предлагает два способа чтения excel файлов без сервера: FileReader API (для современных браузеров) и AJAX-запрос (для старых браузеров). Ниже пример чтения excel файла с помощью FileReader API:

function handleFile(e) {
  var files = e.target.files, f = files[0];
  var reader = new FileReader();
  reader.onload = function(e) {
    var data = e.target.result;
    var workbook = XLSX.read(data, {type: 'binary'});
    /* Вывод содержимого workbook в браузер */
  };
  reader.readAsBinaryString(f);
}
input_dom_element.addEventListener('change', handleFile, false);

Другие примеры чтения с excel файлов в js-xlsx можно найти здесь.

READ ALSO
maskedinput - Маска для email

maskedinput - Маска для email

Как определить маску email для вводимого поля с помощью этой библиотеки?

130
slick текстовые dots

slick текстовые dots

как изменить стандартные dots на текст (подпись слайда)То есть - при нажатии на cat 2 переключается на второй слайд, и т

198
Почему компонент не получает (не имеет) props?

Почему компонент не получает (не имеет) props?

Имеется такой простой (лишнее специально вырезал) компонент:

156