...

суббота, 21 апреля 2018 г.

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

Введение


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

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


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

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


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

Что нужно:

  • Современный браузер (проверьте в старых)
  • Отформатированная таблица
  • Colspan, rowspan, border — знание табличной верстки
var tableToExcel = (function() {
                var uri = 'data:application/vnd.ms-excel;base64,'
                , template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head>{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, добавьте стили и после этого вызывайте генерацию файла.

В заключение


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

Let's block ads! (Why?)

Комментариев нет:

Отправить комментарий