Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2017, 16:41   #1
botan-32
Пользователь
 
Регистрация: 26.04.2017
Сообщений: 20
По умолчанию Экспорт в Excel

Добрый день. Нужна помощь, есть таблица HTML и ее необходимо экспортировать в Excel. Пытаюсь реализовать через JavaScript, но он не хочет работать с форматом *.xlsx. В чем может быть проблема, помогите с доработкой.

Вот исходник:
Таблица
Код HTML:
        <div id="content">
            <table id="tableExcel" border="1">
                <tr>
                    <th></th>
                    <th>Пользователь</th>                    
                </tr>
                <tr>
                    <td>1</td>
                    <td>Иванов П.</td>
                </tr> 
                <tr>
                    <td>2</td>
                    <td>Сидоров М.</td>
                </tr>
                <tr>
                    <td>3</td>
                    <td>Курочкин П.</td>
                </tr>                
            </table>
            <button onclick="export_to_excel()">Экспорт</button>
        </div>
И сама функция экспорта
Код HTML:
        <script>
            function export_to_excel(){
                var uri = 'data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,',
                    template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" \n\
                                xmlns:x="urn:schemas-microsoft-com:office:excel" \n\
                                xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]>\n\
                                <xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>',
                base64 = function(s){
                    return window.btoa(unescape(encodeURIComponent(s)))
                },
                format = function(s, c){
                    return s.replace(/{(\w+)}/g, function(m, p){
                        return c[p];
                        })
                    }
                var tableExcel = document.getElementById("tableExcel").innerHTML;
                var ctx = {
                    worksheet: name || '', table: tableExcel
                    };
                var link = document.createElement("a");
                link.download = "export.xls";
                link.href = uri + base64(format(template, ctx))
                link.click();
            }
        </script>
И подключить
Код HTML:
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>        
    </head>
botan-32 вне форума Ответить с цитированием
Старый 29.05.2017, 21:21   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

а что именно не работает
ADSoft вне форума Ответить с цитированием
Старый 30.05.2017, 08:27   #3
botan-32
Пользователь
 
Регистрация: 26.04.2017
Сообщений: 20
По умолчанию

Данный скрипт экспортирует данные в формате *.xls, а мне необходимо доработать под формат *.xlsx. Заменил MIME тип, все равно не работает. Очень прошу помощи или может есть еще какие варианты реализации экспорта с использованием библиотек. Мне необходимо реализовать экспорт HTML таблицы в новый формат эксель.
botan-32 вне форума Ответить с цитированием
Старый 30.05.2017, 09:37   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от botan-32 Посмотреть сообщение
Данный скрипт экспортирует данные в формате *.xls
попробуйте открыть export.xls в блокноте.
Не знаю, как у Вас, а у меня export.xls получается такой:
Цитата:
Код:
<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><!--[if gte mso 9]>
                                <xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name></x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>
                <tbody><tr>
                    <th>№</th>
                    <th>Пользователь</th>                    
                </tr>
                <tr>
                    <td>1</td>
                    <td>Иванов П.</td>
                </tr> 
                <tr>
                    <td>2</td>
                    <td>Сидоров М.</td>
                </tr>
                <tr>
                    <td>3</td>
                    <td>Курочкин П.</td>
                </tr>                
            </tbody></table></body></html>
строго говоря, это не совсем XLS (точнее, совсем не XLS).


p.s.
Цитата:
Сообщение от botan-32 Посмотреть сообщение
И подключить
Код:
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>        
    </head>
jQuery в данном скрипте не используется, можно и не подключать.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.05.2017, 15:08   #5
botan-32
Пользователь
 
Регистрация: 26.04.2017
Сообщений: 20
По умолчанию

Если это не xls, то тогда как правильно создать xls или xlsx отчет? От чего необходимо отталкиваться?
botan-32 вне форума Ответить с цитированием
Старый 30.05.2017, 16:16   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

я сам не сталкивался с такой необходимостью.
ну вот, в интернетах пишут, что Sheet JS это умеет

демка так даже работает - тыц!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.05.2017, 16:30   #7
botan-32
Пользователь
 
Регистрация: 26.04.2017
Сообщений: 20
По умолчанию

Эту демку я видел и пытался ее реализовать, но на сайте она работает отлично, а если я переношу полный код в свой проект, то ничего не работает и никаких признаков жизни. Поэтому пытаюсь реализовать задачу другими способами.
botan-32 вне форума Ответить с цитированием
Старый 30.05.2017, 16:34   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от botan-32 Посмотреть сообщение
Эту демку я видел и пытался ее реализовать, но на сайте она работает отлично, а если я переношу полный код в свой проект, то ничего не работает и никаких признаков жизни.
ну, извините...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 31.05.2017, 08:28   #9
botan-32
Пользователь
 
Регистрация: 26.04.2017
Сообщений: 20
По умолчанию

Все, разобрался. Не подключил один модуль, из-за которого не работал экспорт. Ща все отлично. Спасибо за наводку. Только хотелось бы еще узнать, данный пример выгружает информацию в эксель без границ. Как можно сделать границы для таблицы?
botan-32 вне форума Ответить с цитированием
Старый 31.05.2017, 09:31   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от botan-32 Посмотреть сообщение
Как можно сделать границы для таблицы?
я не подскажу.
При этом, допускаю, что этого в OpenSource версии просто нет (там они ещё Pro версию продают)
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Excel - экспорт выбранной ячейки из DBGrid в Excel. wymkent Помощь студентам 0 16.05.2012 02:10
экспорт в excel andrew_jr20 C# (си шарп) 4 12.12.2011 13:40
экспорт из Excel в БД Tanuska___:) БД в Delphi 7 27.08.2008 15:31
Экспорт из Access в Excel, Экспорт из отчётов в таблицу Excel Kissedbythegod Microsoft Office Access 1 31.05.2008 22:15