excel_export

by nmathur

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.21/js/jquery.dataTables.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js"></script>
<link rel="stylesheet" href="https://cdn.datatables.net/1.10.13/css/jquery.dataTables.min.css">
<script src="https://cdn.datatables.net/buttons/1.5.6/js/dataTables.buttons.min.js"></script>
<script src="https://cdn.datatables.net/buttons/1.2.4/js/buttons.html5.min.js"></script>
<script src="https://cdn.datatables.net/fixedcolumns/3.2.4/js/dataTables.fixedColumns.min.js"></script>
<button type="button" onclick="printMarksExcel()">
Download
</button>

<table id="example" class="display" cellspacing="0" width="100%">
        <thead>
            <tr>
                <th>
                <div>First Name</div></th>
                <th>Last name</th>
                <th>Position</th>
                <th>Office</th>
                <th>Salary</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td><span style="color:green;">ABC</span></td>
                <td>Nixon</td>
                <td>System Architect</td>
                <td>Edinburgh</td>
                <td>162700</td>
            </tr>
            <tr>
                <td><span style="color:green;">Nobita</span></td>
                <td>Winters</td>
                <td>Accountant</td>
                <td>Tokyo</td>
                <td>162700</td>
            </tr>
            <tr>
                <td><span style="color:green;">Aston</span></td>
                <td>Cox</td>
                <td>Junior Technical Author</td>
                <td>San Francisco</td>
                <td>162700</td>
            </tr>
            <tr>
                <td><span style="color:green;">Yuvan</span></td>
                <td>Kelly</td>
                <td>Senior Javascript Developer</td>
               ...

JavaScript

var table;
    $(document).ready(function () {
        table = $('#example').DataTable({
            dom: 'Bfrtip',
            scrollY: "500px",
            scrollX: true,
            scrollCollapse: true,
            paging: false,
            searching: false,
            fixedColumns: {
                leftColumns: 3
            },
            select: true,
            buttons: [
                {
                    extend: 'excel', exportOptions: {
                        format: {
                            body: function (data, row, column, node) {
                            debugger;
                                if ($(data).is("a")) {
                                    var result = $(data).html();

                                    var element = $(result);//convert string to JQuery element
                                    var finalResult = "";
                                    element.each(function (index) {
                                        switch ($(this)[0].nodeName) {
                                            case 'SPAN': {
                                                var text = $(this)[0].innerText;
                                                if (text !== '' && text !== undefined) {
                                                    finalResult += text.trim();
                                                }
                                                break;
                                            }
                                            case 'BR': {
                                                finalResult += "\n";
                                                break;
                                            }
                                        }
                                    });
                                    return wrap(finalResult);
                                } else
                                    if ($(data).is("span")) {
                                    return...