vitaly_KF
@vitaly_KF
Разработчик Qt/C++

SheetJS/js-xlsx и форматирование файла?

Привет!

Голова моя уже раскалывается, нервы на взводе, а результата за два дня работы я добиться так и не смог =(

Прошу помочь мне советом)

В общем:
1) Есть приложение на Meteor (решил разобраться что да как с ним, запилить небольшой проект, до этого не было опыта работы ни с ним, ни с node, npm, mrt, bower и т.д., в web всё писал на Yii);
2) Есть файл sample.xlsx находящийся на сервере;
3) Есть библиотека для разбора XLSX на JavaScript. Называется она SheetJS, может работать как на клиенте, так и на сервере (node, все дела).

Задача такова:
1) При нажатии на кнопку - скачиваем с сервера на клиент шаблон файла sample.xlsx, в котором задано форматирование - это описано в стандартной документации SheetJS, делается через XMLHttpRequest, ничего сложного;
2) Меняем что-то в файле - тоже вроде более/менее понятно;
3) Сохраняем файл на компьютер пользователя. Вот тут и кроется корень проблемы - на компьютер пользователя сохраняется файл без какого бы то ни было форматирования. То есть тупо - стандартная разметка Excell и куча текста разбросанная по всей таблице.

Собственно, мои вопросы:
1) Я, грешен, не смог до конца разобраться с исходниками SheetJS и форматом XLSX. Возможно это - нормальное поведение для SheetJS и он предназначен только лишь для разбора/парсинга, но не для нормального сохранения XLSX?
2) Возможно я не увидел где-то какую-то опцию?
3) Существуют ли другие, адекватные библиотеки по работе с XLSX на JavaScript? Насколько я смог понять - нет.
4) Стоит забить на идею разбора/сохранения Excel шаблона с использование JS и просто запилить всё как отдельный веб-сервис для текущего проекта на PHP и PHPExcel? Это будет легко, но... нафиг тогда Meteor и иже с ним?
5) А может стоит сменить формат исходного и итогового файла на PDF? Но тут тоже не знаю... какая библиотека может работать по pdf шаблону? В каком приложении сделать pdf шаблон?

Собственно я сейчас склоняюсь к последнему варианту, как к наиболее подходящему.
Отказаться от создания Excel документов я не могу, так как это приведёт к бессмысленности реализации вообще всего проекта. А сделал я там уже не мало и собираюсь довести начинание до конца, хотя повторюсь - уже появилось желание разбить клавиатурой монитор, а также прийти лично к каждому разработчику SheetJS и... поговорить на тему добавления необходимого мне функционала.

Вообще сама библиотека выглядит как какая-то поделка на коленке, но люди хвалят...
Ссылка на библиотеку: https://github.com/SheetJS/js-xlsx

Фух, вот, вроде высказался. Ребята, прошу помогите советом.

Вот примеры изначального:
ead215ea456148a0be18aac508d4f2a1.png
... и итогового файла:
c6d445b727e5481e8ea869b8057308f1.png
  • Вопрос задан
  • 14081 просмотр
Решения вопроса 1
pomeo
@pomeo
Я тут последний месяц активно работал с экселем из ноды и js-xlsx использовал исключительно для парсинга. Для создания очень хорошо пошёл этот модуль https://github.com/natergj/excel4node . Форматирование в нём задаётся очень легко. Память потребляет сильно меньше всех остальных.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@PyTiMa
Учусь, кручусь, верчусь.
https://www.npmjs.com/package/node-xlsx может по-адекватней будет.... это обертка для Ноды на js-xlsx.
Я когда вижу на гитхабе js-xlsx их примеры кода - меня рвать тянет, простите за резкость)
Ответ написан
@squall123
Я тоже долго возился с этой проблемой, но в итоге нашел решение. Вот хороший пакет для редактирования Excel-файлов в node.js: https://github.com/exceljs/exceljs
Реально качественный пакет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы