sunil gutta Ответов: 3

Как экспортировать данные jquery datatable в excel ?


Привет
Я хочу экспортировать свои данные datatable в excel или pdf . В любой момент, когда я нажимаю на свое требование, оно должно работать именно так .

Я вытаращил глаза, но не смог найти хороших статей, которые должны были бы объяснить вещи в лучшей перспективе

РЕДАКТИРОВАНИЕ КОДА :
<script  type="text/javascript">

    $(document).ready(function () {

 
        $("#btnExport").click(function(e) {
            window.open('data:application/vnd.ms-excel,' + encodeURIComponent($('#myDataTable').html()));
            e.preventDefault();
        });​

        $.datepicker.regional[""].dateFormat = 'dd/mm/yy';
        $.datepicker.setDefaults($.datepicker.regional['']);

        var tab=  $('#myDataTable').dataTable({
           
            "bProcessing": true,
            "bServerSide": true,
            "sAjaxSource": "Company/DataProvider",
            "bJQueryUI": true,
            "aoColumns": [
                         {
                             "sName": "ID" 
                         },
                         { "sName": "COMPANY_NAME" },
                         { "sName": "ADDRESS" },
                         { "sName": "TOWN" }
            ]

        });
       

        tab.makeEditable({
            "aoColumns": [
                null,
                null,
                null,
                {
                indicator: 'Saving...',
                tooltip: 'Click to select town',
                loadtext: 'loading...',
                type: 'select',
                onblur: 'submit',
                loadurl: 'AjaxDataProvider1'
            
            }]
        });

    });

        </script>

}

<table id="myDataTable" class="display">
                    <thead>

                         <tr>
                            <th>ID</th>
                            <th>Company name</th>
                            <th>Address</th>
                           <th>Town</th>
                        </tr>
    
                    </thead>
                        
                    <tbody> 
                   </tbody>

                </table>

    <input type="button" id="btnExport" value="Export to Excel" />


Ну я использовал одну из ссылок и попробовал вот так я не знаю почему так же как я пробовал в другой системе он показывает мне некоторые столбцы в excel но теперь он просто бросает мне ошибку типа:
ХРОМ : Показывая только заголовки таблиц , вот и все, столбцы не загружаются
IE 10 : Критическая ошибка JavaScript в строке 47, колонке 12 in http://localhost:63553/Company/Index
SCRIPT1014: недопустимый символ

Дело в том, что когда я удалил кусок кода, который я сделал для экспорта в excel, данные в таблицу были успешно загружены .

Надеюсь на лучшие предложения

С уважением

3 Ответов

Рейтинг:
9

Guruprasad.K.Basavaraju

Я не мог заглянуть в ваш код, но ниже должно работать.. замените #btnGuru вашим именем кнопки.


$("#btnGuru").click(function () {
    tableToExcel('myDataTable', 'W3C Example Table');
});


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><!--[if gte mso 9]><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]; }) }
    return function (table, name) {
        if (!table.nodeType) table = document.getElementById(table)
        var ctx = { worksheet: name || 'Worksheet', table: table.innerHTML }
        window.location.href = uri + base64(format(template, ctx))
    }
})()


sunil gutta

Лучшее решение до сих пор :) да, я получаю данные, но вы знаете, что я работал с плагинами в основном я пытался попробовать с помощью плагина table tools, который дает больше возможностей для решения проблем . xls,pdf,печать и т. д. Итак, вы наткнулись на настольные инструменты .. я пытаюсь понять, что я тоже сталкиваюсь с проблемами дисплея и otehr

Guruprasad.K.Basavaraju

Нет, с каким плагином вы работаете ? Также, Пожалуйста, закройте этот вопрос, приняв один из приведенных выше ответов. Решения, приведенные выше моих, также верны, пожалуйста, примите и их тоже. Мы можем посмотреть на ваши плагины в другом потоке.

sunil gutta

Гуру, когда у вас будет время, пожалуйста, посмотрите на вопрос, который я разместил на столе инструментов .. все, что я делаю идеально, но кое-где что-то завинчивается

sunil gutta

хорошо, я опубликую новый вопрос исключительно на плагине datatools .. спасибо. возможно, посмотрите на мой новый пост с моей работой над упомянутым кодом : КЛИКНИТЕ СЮДА

Рейтинг:
21

Sergey Alexandrovich Kryukov

Пожалуйста, смотрите этот продукт: http://excelbuilderjs.com[^].

Если вы выполняете поиск в интернете, вы найдете рекомендации по использованию ActiveX через браузер. Избегайте этого всеми средствами. Он не только не поддерживается всеми браузерами, но и совершенно небезопасен. Некоторые пользователи, разбирающиеся в безопасности, не вернутся на ваш сайт, если увидят, что вы используете такие грязные подходы.

Кроме того, вы должны сделать экспорт на стороне сервера. Как вы уже упоминали MVC, я могу догадаться, что вы используете .NET. Если это так, вы можете использовать Open XML SDK. Пожалуйста, смотрите мой прошлый ответ, который ссылается на мои другие ответы:
Как добавить библиотеку объектов microsoft excel 15.0 из Add Reference в MS Visual Studio 2010[^].

Это еще одна альтернатива на основе .NET: http://npoi.codeplex.com[^].

—СА


Manas Bhardwaj

+5!

Смотрите мой ответ. Некоторые из них довольно просты и впечатляющи.

Sergey Alexandrovich Kryukov

Спасибо тебе, Манас.
—СА

sunil gutta

Эй я слышал, что инструменты таблица работает нормально, который обеспечивает экспорт в другие источники в Excel , PDF и т. д. но я не могу ясно понять происходящее . любое мнение товарищи

Sergey Alexandrovich Kryukov

Каждое действие предполагает некоторые необходимые предпосылки. И тоже задавал вопросы. Предполагается, что вы способны ясно понимать вещи, и, в случае некоторых неясных предметов, способны задавать четкие вопросы по ним. И так далее...
—СА

sunil gutta

ОК дружище я буду . и извините за предоставленные неудобства , и я посмотрю на ссылки, которые вы дали . попробовал одну из этих ссылок, статическое содержимое html-таблицы мне не очень поможет, но я попробовал эту опцию на моем jquery datatable, я получаю только столбцы, но никаких записей .

Sergey Alexandrovich Kryukov

Трудно понять, что испорчено, не видя вашего кода.
—СА

sunil gutta

один раз пожалуйста посмотрите на код и проблемы которые я обновил в своем посте Спасибо друг за ваше время

Sergey Alexandrovich Kryukov

В чем проблема с этим кодом различия?
—СА

sunil gutta

Ну, я не знаю точно, но мой код отлично работает, когда я удаляю строки кода, вставленные для экспорта в excel . я думаю, что может быть проблема ? но я донно куда ? не могли бы вы быстро взглянуть? Я уверяю вас, что код в порядке, но экспорт не происходит .

Sergey Alexandrovich Kryukov

Можете ли вы использовать отладчик? Он покажет вам все.
—СА

Guruprasad.K.Basavaraju

Это действительно хорошие СА.

Sergey Alexandrovich Kryukov

Спасибо вам, Guruprasad.
—СА

Рейтинг:
12

Manas Bhardwaj

В дополнение к тому, что сказал SA, вы можете посмотреть на эти примеры плагинов:

http://www.jquerybyexample.net/2012/10/export-table-data-to-excel-using-jquery.html[^]

http://jsfiddle.net/lesson8/wVejP/[^]

http://wsnippets.com/export-html-table-data-excel-sheet-using-jquery/[^]


Sergey Alexandrovich Kryukov

Конечно, 5ед.
—СА