Как стать автором
Обновить

Комментарии 29

НЛО прилетело и опубликовало эту надпись здесь
20+ не работающих форков меня не впечатлили. Впрочем тема xls благостна для холиваров.
Сегодня я опишу довольно тривиальную, но ни где не освященную тему

<humor>Освящать что бы то ни было — это прерогатива церкви. </humor>
Там после «ни где» можно не читать
процесс не описан ни где в полной мере и так приступим
Вообще об ошибках/опечатках принято в личку писать, но тут автор постарался на славу: вся статья является примером абсолютной безграмотности. Но главное в заключении:
Если понравилась статья, могу ответить в комменты после получения приглашения
Нет.
1. Хабр — это не Gist, для статьи недостаточно выложить кусок кода со словами «ну вот, пользуйтесь». Нужны комменты, объяснение принципа работы, пример.

2. Я бы подумал, что русский язык для автора не родной. Особенно плохо с пунктуацией. Перед публикацией статью желательно прогонять хотя бы через Word, а еще лучше — дать на вычитку знакомым.
А модерации разве тут нет?
Нет.
Судя по таким вот
типа статьям
видимо она прекратила свое существование.
Вы поклонник написания 100% неповторяемого кода?

Я поклонник написания кода.

Код подходил под задачу, был добавлен код сохранения с именем файла, написаны заметки по оформлению. Или вы «Правообладатель»?

PS и этот кусок кода отлично подходил для демонстрации принципа работы.
habrahabr.ru/info/help/rules
Заниматься копипастом и кросспостом
Мы всячески приветствуем интересный и полезный сообществу контент, но только если он оригинальный. Поэтому не следует копипастить на «Хабр» тексты, которые ранее были опубликованы на других ресурсах (даже если вы — автор такого текста).
Немного оффтоп: xls — зло. Еще большее зло, что эти форматы (xls, doc и другие) до сих пор стандарт де-факто много где. Старый, проприентарный, бинарный. MS Office Open XML (docx, xlsx, ...) и OpenDocument поддерживаются куда лучше большим количеством современных офисных пакетов.
Зло он конечно зло, но легаси код и миллионы установок играют свою роль.
У меня стоит и MS и Libre я чаще использую MS, и только в одном случае использую Calc, когда нужно работать с utf-8 в CSV.
Отдельный разговор бухгалтерия и всякие контролирующие органы, там засилье MS

А TableExport вы смотрели? Возможно у меня чересчур тривиальные случаи, но с особыми проблемами не сталкивался.
Отличная штука, надо попробовать
А вот мне пришлось выгружать данные на стороне ноды, со стилями
в итоге, забил на стили и просто выгружаю, с модулем xlsx
Правда при этом сервер потихоньку течет, не знаю почему…
Хотелось бы услышать, генерировал эксельку с:
1) форматированием — даже банальный перенос строки в ячейке
2) комментарии к ячейкам
Если имеется Windows-машина с установленным Офисом, то на ней можно организовать простенький http-сервис, хоть на Node.js, хоть на Go, принимающий на вход данные и, посредством хоть Windows Script Host, дергать интерфейсы Офиса и выдавать уже готовое в любом нужном формате.

Ну зачем windows. На vds можно использовать какой нибудь LibreOffice, который умеет headless.

к сожалению, у нас только линукс серверы
На сервере как раз намного проще. От предложенного Libre до вполне зрелых решений на PHP и Яве. В случае с сервером есть и еще одно преимущество у вас уже сформирован набор данных, а как его отдать клиенту это вопрос 10й.

К этим пунктом хотелось бы приплюсовать размещение картинок в генерируемом файле.

У меня эта задача не стояла, но все зависит от движка рендеринга Microsoft Excel. Скорее всего он поймет рисунки встроенные в файл.
developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs

например
<img src = 'data:image/gif;base64,R0lGODlhCwALAIAAAAAA3pn/ZiH5'>
Как-то приходилось делать подобное для выгрузки из ExtJS в Excel. Сразу отмечу, что к JS/PHP/HTML я имею самое поверхностное отношение:
// Функция экспорта в Excel с панели табуляции
function storeToExcel() {
    var aTab = tabPanel.getActiveTab( );
    var aStore = aTab.getStore();  
    Ext.Ajax.request({
        url: 'exportToExcel.php',
        jsonData: Ext.encode(Ext.pluck(aStore.data.items, 'data')),
        success : function(response) {
            if(response.responseText) {
                window.open("export/" + response.responseText);
            } else {
                Ext.Msg.alert('Уведомление', 'Ошибка экспорта');
            }
        }
    });
}


А сам exportToExcel.php был максимально простой и использовал готовую библиотеку PHPExcel.
Возможно кому-то такой способ подойдет.
По моему мнению, это наиболее правильный путь. Серверные компоненты отлично справляются. Но это особенности именно моего проекта.
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории