2015-12-03 5 views
3

Как исключить последний столбец datatable при экспорте в формат excel с помощью jquery? Я пробовал .not("#tableid"), .remove, exclude:"#tableid" но не работает. Есть ли решение для этого ??? Вот мой кодИсключить последний столбец при экспорте в excel

код Таблица:

<table class="table table-bordered table-striped tableToExcel" id="tbl_datatable"> 
    <thead> 
    <tr> 
     <th>Identifier</th> 
     <th>Group Name</th> 
     <th>Group Name English</th> 
     <th>Fiscal Year</th> 
     <th>Date</th> 
     <th>District</th> 
     <th>District in English</th> 
     <th>VDC</th> 
     <th>VDC in English</th> 
     <th>Ward No</th> 
     <th>Program</th> 
     <th>Livestock/Crop</th> 
     <th id="noExl">Action</th> 
    </tr> 
    </thead> 
    <tbody> 
    </tbody> 
</table> 

Jquery код:

$(document).ready(function() { 
    $("#exportExcel").click(function() { 
     $(function() { 
      $(".tableToExcel").remove("#noExl").table2excel({ 
       exclude: "#noExl", 
       name: "Excel Document Name", 
       filename: "Group", 
       exclude_img: true, 
       exclude_links: true, 
       exclude_inputs: false 
      }); 
     }); 
    }); 
}); 
+1

Есть много с одинаковым идентификатором 'noExl', его не разрешено. Вместо этого используйте имя класса. –

+0

попробовали класс, но не решили – Xravn

+0

использовать имя класса и вызывать '$ (". ClassName "). Remove();' перед экспортом. – artm

ответ

1

Да, это может быть сделано очень быстро. Поскольку мы хотим исключить целые столбцы, я думаю, что использование исключающих классов как .noExl - плохая идея. Вместо этого я ввожу новый вариант, columns:

defaults = { 
    exclude: ".noExl", 
    name: "Table2Excel", 
    columns: [] 
}; 

, который определяет, какие столбцы, которые должны быть экспортированы в Excel. Красота заключается в том, что при этом вы также можете указать заказ столбцов. А потом я изменил цикл init() функции для:

$(e.element).each(function(i, o) { 
    var tempRows = ""; 
    $(o).find("tr").not(e.settings.exclude).each(function(i, o) { 
     if (e.settings.columns.length == 0) { 
      tempRows += "<tr>" + $(o).html() + "</tr>"; 
     } else { 
      var row = ""; 
      e.settings.columns.forEach(function(colIndex) { 
       //is it a thead or tbody row? 
       if ($(o).find('th').length > 0) { 
        row += $(o).find('th:eq(' + colIndex + ')')[0].outerHTML; 
       } else { 
        row += $(o).find('td:eq(' + colIndex + ')')[0].outerHTML; 
       } 
      }) 
      tempRows += '<tr>' + row + '</tr>'; 
     } 
    }); 
    e.tableRows.push(tempRows); 
}); 

Именно здесь, на GitHub ->https://github.com/davidkonrad/table2excel

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

//export only column #2 and #3 and in reverse order 
//NB! columns[] is zero based 
$(".table2excel").table2excel({ 
    name: "Excel Document Name", 
    filename: "myFileName", 
    exclude_img: true, 
    exclude_links: true, 
    exclude_inputs: true, 
    columns : [2,1] 
}) 

демо ->http://jsfiddle.net/qyrbazur/

В вашем случае, если вы хотите, чтобы исключить последнюю колонку, используйте

$(".tableToExcel").remove("#noExl").table2excel({ 
    name: "Excel Document Name", 
    filename: "Group", 
    exclude_img: true, 
    exclude_links: true, 
    exclude_inputs: false 
    columns : [0,1,2,3,4,5,6,7,8,9,10,11] 
}); 
+0

Спасибо @davidkonard;) – Xravn