[Из песочницы] Export to Excel from JS

habr.png

Введение


Всем привет! Сегодня я опишу довольно тривиальную, но ни где не освященную тему экспорт из страницы данных в Excel. На мое удивление сам процесс не описан ни где в полной мере и так приступим.

Все написано до нас


Подумал я и начал искать нашел очень быстро SheetJS, но боже мой как там запущено все. Если с форматированием еще можно справится, то стили — это головная боль.

Все написано до нас подход 2


В старом-старом SharePoint 2007 есть такая возможность экспортировать эксель файл, на удивление это работает до сих пор и хорошо поддается описанию.

Что нужно:

  • Современный браузер (проверьте в старых)
  • Отформатированная таблица
  • Colspan, rowspan, border — знание табличной верстки


var tableToExcel = (function() {
		var uri = 'data:application/vnd.ms-excel;base64,'
		, template = '{table}
' , base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) } , format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; }) } , downloadURI = function(uri, name) { var link = document.createElement("a"); link.download = name; link.href = uri; link.click(); } return function(table, name, fileName) { if (!table.nodeType) table = document.getElementById(table) var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML} var resuri = uri + base64(format(template, ctx)) downloadURI(resuri, fileName); } })();



    // params: element id, sheet name, file name
    tableToExcel('resultTable','Смета', 'Ремрайон_смета.xls');


Форматирование


Оформите саму сетку в таблице с помощью атрибутов colspan, rowspan, добавьте стили и после этого вызывайте генерацию файла.

В заключение


Если понравилась статья, могу ответить в комменты после получения приглашения.

© Habrahabr.ru