Ошибка при использовании библиотеки - javascript

Я использую библиотеку js-xlsx. Мне нужно написать файл excel. Поэтому, когда я определил переменную wb как книгу Excel и попросил js-xlsx записать ее в тот же файл

XLSX.writeFile(wb, 'out.xls');

Я получаю сообщение об ошибке в консоли браузера:

require.js:900 TypeError: Cannot read property 'writeFileSync' of undefined

XLSX.writeFile превращается в js-xlsx/dist/xlsx. js строка 1340

_fs = require('f'+'s');

И когда я приостановил его для отладки, _fs, конечно же, не определено. Я не вижу, где я мог бы найти библиотеки «f» или «s». Пожалуйста, помогите мне понять это.


person Mae    schedule 21.09.2016    source источник
comment
Вы запускаете его в браузере?   -  person Maxx    schedule 21.09.2016
comment
@Maxx да, это работает с браузером   -  person Mae    schedule 21.09.2016
comment
Нет, это не так. Вы не можете написать файл с помощью браузера, ваш код должен запускаться под nodejs   -  person Maxx    schedule 21.09.2016
comment
@Maxx Это не то, что говорится в их README... "In the browser: <script lang="javascript" src="dist/xlsx.core.min.js"></script>   -  person evolutionxbox    schedule 21.09.2016
comment
Действительно? В их файле readme сказано, что nodejs записывает в файл: XLSX.writeFile(workbook, 'out.xlsx');   -  person Maxx    schedule 21.09.2016
comment
Вы пытались использовать XLSX.write(), как показано здесь: заголовок stackoverflow.com/questions/27548378/   -  person bfmags    schedule 21.09.2016
comment
@bfmags и Maxx - спасибо за помощь - XLSX.writeFile действительно для node.js, а XLSX.write успешно работает в браузере. Может быть, вы добавите эту информацию в качестве ответа?   -  person Mae    schedule 21.09.2016
comment
Спасибо, буду :)   -  person bfmags    schedule 21.09.2016


Ответы (1)


попробуйте использовать функцию XLSX.write-- writeFile специфична для nodejs


  • XLSX.write(wb, filename) записать в двоичную строку (->browser)

  • XLSX.writeFile(wb, filename) функция nodeJS


/* XLSX.write(wb, 'out.xls'); */

/* bookType can be 'xlsx' or 'xlsm' or 'xlsb' */
var wopts = { bookType:'xlsx', bookSST:false, type:'binary' };

var wbout = XLSX.write(workbook,wopts);

function s2ab(s) {
  var buf = new ArrayBuffer(s.length);
  var view = new Uint8Array(buf);
  for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
  return buf;
}

/* the saveAs call downloads a file on the local machine */
saveAs(new Blob([s2ab(wbout)],{type:""}), "test.xlsx")

https://github.com/SheetJS/js-xlsx#user-content-writing-workbooks

person bfmags    schedule 21.09.2016