Documentation v1.0.4

Preview Purchase

DataTables Export

Buttons  extension for DataTables provides a framework with common options and API that can be used with DataTables, but is also very extensible, recognising that you will likely want to use buttons which perform an action unique to your applications.
Customer Name Email Status Date Joined No. Orders No. Products Total
Emma Smith [email protected]
Active
10 Nov 2022, 11:05 am 65 79 $379.00
Melody Macy [email protected]
Active
24 Jun 2022, 10:10 pm 34 41 $2496.00
Max Smith [email protected]
Active
10 Nov 2022, 10:30 am 31 43 $2652.00
Sean Bean [email protected]
Active
10 Nov 2022, 10:30 am 89 99 $2552.00
Brian Cox [email protected]
Active
25 Oct 2022, 8:43 pm 27 35 $4257.00
Mikaela Collins [email protected]
Active
20 Jun 2022, 10:10 pm 45 56 $511.00
Francis Mitcham [email protected]
Active
21 Feb 2022, 6:05 pm 47 62 $4189.00
Olivia Wild [email protected]
Active
10 Mar 2022, 2:40 pm 77 85 $3661.00
Neil Owen [email protected]
Active
25 Jul 2022, 9:23 pm 12 26 $2490.00
Dan Wilson [email protected]
Active
10 Nov 2022, 11:05 am 48 55 $133.00
Emma Bold [email protected]
Active
10 Mar 2022, 11:30 am 85 90 $3306.00
Ana Crown [email protected]
Active
25 Oct 2022, 6:43 am 60 70 $3522.00
Robert Doe [email protected]
Active
20 Jun 2022, 9:23 pm 22 30 $953.00
John Miller [email protected]
Active
24 Jun 2022, 11:30 am 76 83 $1157.00
Lucy Kunic [email protected]
Active
20 Dec 2022, 11:05 am 83 89 $1883.00
Ethan Wilder [email protected]
Active
25 Oct 2022, 10:10 pm 24 29 $2830.00
Neil Owen [email protected]
Active
22 Sep 2022, 10:10 pm 4 16 $3520.00
Emma Smith [email protected]
Active
05 May 2022, 2:40 pm 91 98 $4969.00
Melody Macy [email protected]
Active
20 Jun 2022, 6:05 pm 80 93 $1663.00
Max Smith [email protected]
Active
25 Jul 2022, 6:05 pm 41 49 $3797.00
Sean Bean [email protected]
Active
20 Jun 2022, 8:43 pm 89 98 $171.00
Brian Cox [email protected]
Active
21 Feb 2022, 8:43 pm 67 82 $1269.00
Mikaela Collins [email protected]
Active
24 Jun 2022, 6:43 am 80 95 $4087.00
Francis Mitcham [email protected]
Active
20 Jun 2022, 5:20 pm 85 99 $439.00
Olivia Wild [email protected]
Active
22 Sep 2022, 6:43 am 64 76 $4128.00
<div class="card card-p-0 card-flush">
 <div class="card-header align-items-center py-5 gap-2 gap-md-5">
  <div class="card-title">
   <!--begin::Search-->
   <div class="d-flex align-items-center position-relative my-1">
    <span class="svg-icon svg-icon-1 position-absolute ms-4">...</span>
    <input type="text" data-kt-filter="search" class="form-control form-control-solid w-250px ps-14" placeholder="Search Report" />
   </div>
   <!--end::Search-->
   <!--begin::Export buttons-->
   <div id="kt_datatable_example_1_export" class="d-none"></div>
   <!--end::Export buttons-->
  </div>
  <div class="card-toolbar flex-row-fluid justify-content-end gap-5">
   <!--begin::Export dropdown-->
   <button type="button" class="btn btn-light-primary" data-kt-menu-trigger="click" data-kt-menu-placement="bottom-end">
    <span class="svg-icon svg-icon-1 position-absolute ms-4">...</span>
    Export Report
   </button>
   <!--begin::Menu-->
   <div id="kt_datatable_example_export_menu" class="menu menu-sub menu-sub-dropdown menu-column menu-rounded menu-gray-600 menu-state-bg-light-primary fw-bold fs-7 w-200px py-4" data-kt-menu="true">
    <!--begin::Menu item-->
    <div class="menu-item px-3">
     <a href="#" class="menu-link px-3" data-kt-export="copy">
     Copy to clipboard
     </a>
    </div>
    <!--end::Menu item-->
    <!--begin::Menu item-->
    <div class="menu-item px-3">
     <a href="#" class="menu-link px-3" data-kt-export="excel">
     Export as Excel
     </a>
    </div>
    <!--end::Menu item-->
    <!--begin::Menu item-->
    <div class="menu-item px-3">
     <a href="#" class="menu-link px-3" data-kt-export="csv">
     Export as CSV
     </a>
    </div>
    <!--end::Menu item-->
    <!--begin::Menu item-->
    <div class="menu-item px-3">
     <a href="#" class="menu-link px-3" data-kt-export="pdf">
     Export as PDF
     </a>
    </div>
    <!--end::Menu item-->
   </div>
   <!--end::Menu-->
   <!--end::Export dropdown-->

   <!--begin::Hide default export buttons-->
   <div id="kt_datatable_example_buttons" class="d-none"></div>
   <!--end::Hide default export buttons->
  </div>
 </div>
 <div class="card-body">
  <table class="table align-middle border rounded table-row-dashed fs-6 g-5" id="kt_datatable_example">
   <thead>
    <!--begin::Table row-->
    <tr class="text-start text-gray-400 fw-bolder fs-7 text-uppercase">
     <th class="min-w-100px">Customer Name</th>
     <th class="min-w-100px">Email</th>
     <th class="min-w-100px">Status</th>
     <th class="min-w-100px">Date Joined</th>
     <th class="text-end min-w-75px">No. Orders</th>
     <th class="text-end min-w-75px">No. Products</th>
     <th class="text-end min-w-100px pe-5">Total</th>
    </tr>
    <!--end::Table row-->
   </thead>
   <tbody class="fw-bold text-gray-600">
    <tr class="odd">
     <td>
      <a href="#" class="text-dark text-hover-primary">Emma Smith</a>
     </td>
     <td>
      <a href="#" class="text-dark text-hover-primary">[email protected]</a>
     </td>
     <td>
      <div class="badge badge-light-success">Active</div>
     </td>
     <td data-order="2022-03-10T14:40:00+05:00">10 Mar 2022, 2:40 pm</td>
     <td class="text-end pe-0">94</td>
     <td class="text-end pe-0">103</td>
     <td class="text-end">$500.00</td>
    </tr>
   </tbody>
  </table>
 </div>
</div>
"use strict";

// Class definition
var KTDatatablesExample = function () {
    // Shared variables
    var table;
    var datatable;

    // Private functions
    var initDatatable = function () {
        // Set date data order
        const tableRows = table.querySelectorAll('tbody tr');

        tableRows.forEach(row => {
            const dateRow = row.querySelectorAll('td');
            const realDate = moment(dateRow[3].innerHTML, "DD MMM YYYY, LT").format(); // select date from 4th column in table
            dateRow[3].setAttribute('data-order', realDate);
        });

        // Init datatable --- more info on datatables: https://datatables.net/manual/
        datatable = $(table).DataTable({
            "info": false,
            'order': [],
            'pageLength': 10,
        });
    }

    // Hook export buttons
    var exportButtons = () => {
        const documentTitle = 'Customer Orders Report';
        var buttons = new $.fn.dataTable.Buttons(table, {
            buttons: [
                {
                    extend: 'copyHtml5',
                    title: documentTitle
                },
                {
                    extend: 'excelHtml5',
                    title: documentTitle
                },
                {
                    extend: 'csvHtml5',
                    title: documentTitle
                },
                {
                    extend: 'pdfHtml5',
                    title: documentTitle
                }
            ]
        }).container().appendTo($('#kt_datatable_example_buttons'));

        // Hook dropdown menu click event to datatable export buttons
        const exportButtons = document.querySelectorAll('#kt_datatable_example_export_menu [data-kt-export]');
        exportButtons.forEach(exportButton => {
            exportButton.addEventListener('click', e => {
                e.preventDefault();

                // Get clicked export value
                const exportValue = e.target.getAttribute('data-kt-export');
                const target = document.querySelector('.dt-buttons .buttons-' + exportValue);

                // Trigger click event on hidden datatable export buttons
                target.click();
            });
        });
    }

    // Search Datatable --- official docs reference: https://datatables.net/reference/api/search()
    var handleSearchDatatable = () => {
        const filterSearch = document.querySelector('[data-kt-filter="search"]');
        filterSearch.addEventListener('keyup', function (e) {
            datatable.search(e.target.value).draw();
        });
    }

    // Public methods
    return {
        init: function () {
            table = document.querySelector('#kt_datatable_example');

            if ( !table ) {
                return;
            }

            initDatatable();
            exportButtons();
            handleSearchDatatable();
        }
    };
}();

// On document ready
KTUtil.onDOMContentLoaded(function () {
    KTDatatablesExample.init();
});
Learn & Get Inspired

Support at devs.keenthemes.com

Join our developers community to find answer to your question and help others. FAQs
Get Support
Documentation
From guides and how-tos, to live demos and code examples to get started right away.
Plugins & Components
Check out our 300+ in-house components and customized 3rd-party plugins.
Layout Builder
Build your layout, preview it and export the HTML for server side integration.
What's New
Latest features and improvements added with our users feedback in mind.
Buy now