Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Создание excel средствами только javascript (https://javascript.ru/forum/misc/54311-sozdanie-excel-sredstvami-tolko-javascript.html)

STRATEG 13.03.2015 03:04

Создание excel средствами только javascript
 
Подскажите пожалуйста, возможно ли создать excel документ (или CSV) средствами только javascript, без использования сервера?

А теперь чуть подробнее:
На странице средствами javascript создаётся таблица, вот её и надо сохранить в excel, но ввиду ограниченности возможностей сервера, что - либо делать через него не могу.
Через ActiveX тоже не вариант.


P.S. Вообще представлял себе это, как генерацию некоторого виртуального файла (по сути массив байт) с последующей передачей браузеру для работы, как если бы происходило обычное скачивание файл.

Aetae 13.03.2015 05:46

<script>
var csv = '1; foo\n2; bar\n3; русский';
var name = 'filename';
document.write(
  '<a href="data:text/csv;charset=utf-8,',
  encodeURIComponent('\ufeff' + csv), //utf8 bom(чтоб эксель понял кодировку) + строка 
  '" download="' + name + '.csv">' + name + '</a>');
</script>
В простом случае примерно так.
Если файл очень большой - смотреть в сторону Blob.
Если нужен IE - base64, а для старых и ActiveX.
Если надо можно и полноценный excel файл сделать, только весь формат вручную собирать придётся(хотя мож уже и есть какя библиотека на просторах тырнета).

laimas 13.03.2015 05:49

В рамках HTML5 можно хранить в локальном хранилище:

var csv = [[1,2,3],[4,5,6],[7,8,9]]
//сохранить в хранилище
localStorage.csv = JSON.stringify(csv);
//получить из хранилища
b = JSON.parse(localStorage.csv)
alert(JSON.stringify(b))


Для браузеров не поддерживающих локальное хранилище можно в cookie записать, но с ограничением по размеру.

А чем ограничен сервер в возможностях?


Часовой пояс GMT +3, время: 21:25.