2015-04-01 3 views
3

Я хочу иметь 3 кнопки - скачать csv, xls и pdf файл. В моем случае, когда я нажимаю кнопку загрузки файла csv, он сохраняет с расширением csv-файла, но когда я его открываю, он превосходит - это не файл, разделенный запятыми. Кнопка загрузки PDF работает правильно. Кнопка xls не работает - она ​​не доступна для клика. Я попытался написать этот код:Таблицы данных загрузить файл xls/csv не работает должным образом

"TableTools": { 
    "aButtons": [ { 
      "sExtends": "download", 
      "sButtonText": "Download XLS", 
      "sUrl":  "/generate_xls.php" 
     }] 
} 

Но тогда каждая кнопка загружает файл excel.

Вот мой код:

<html> 
 
<head> 
 
<link rel="stylesheet" href="//cdn.datatables.net/1.10.5/css/jquery.dataTables.min.css" type="text/css" /> 
 

 
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script> 
 
<script src="//cdn.datatables.net/1.10.5/js/jquery.dataTables.min.js"></script> 
 
<script src="https://www.datatables.net/release-datatables/media/js/jquery.js"></script> 
 
<script src="https://www.datatables.net/release-datatables/media/js/jquery.dataTables.js"></script> 
 
<script src="https://www.datatables.net/release-datatables/extensions/TableTools/js/dataTables.tableTools.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/zeroclipboard/2.2.0/ZeroClipboard.Core.min.js"></script> 
 
<link rel="stylesheet" 
 
href="https://www.datatables.net/release-datatables/media/css/jquery.dataTables.css" type="text/css" /> 
 
<script> 
 
$(document).ready(function() { 
 
    $('#example').dataTable({ 
 
     "pagingType": "full_numbers", 
 
     "bSort": true, 
 
     "sDom": 'T<"clear">lfrtip', 
 
\t  "tableTools": { 
 
\t  "sSwfPath": "http://cdn.datatables.net/tabletools/2.2.2/swf/copy_csv_xls_pdf.swf", 
 
    
 
\t \t aButtons: [ 
 
    { sExtends: "csv", 
 
     sFileName: 'download.csv', 
 
     sFieldSeperator: "," 
 
    }, 
 
    { sExtends: "xls", 
 
     sFileName: 'download.xls' 
 
    }, 
 
    { sExtends: "pdf", 
 
     sFileName: 'download.pdf' 
 
    } 
 
] 
 
\t } 
 

 

 
    }); 
 
}); 
 
</script> 
 

 
<script> 
 
$(document).ready(function() { 
 
    // Setup - add a text input to each footer cell 
 
    $('#example tfoot th').each(function() { 
 
     var title = $('#example thead th').eq($(this).index()).text(); 
 
     $(this).html('<input type="text" placeholder="Търси '+title+'" />'); 
 
    }); 
 
    
 
    // DataTable 
 
    var table = $('#example').DataTable(); 
 
    
 
    // Apply the search 
 
    table.columns().eq(0).each(function (colIdx) { 
 
     $('input', table.column(colIdx).footer()).on('keyup change', function() { 
 
      table 
 
       .column(colIdx) 
 
       .search(this.value) 
 
       .draw(); 
 
     }); 
 
    }); 
 
}); 
 
</script> 
 
<script> 
 

 
</script> 
 
</head> 
 
<body> 
 
<div class='col-md-8' id='student_results'> 
 
<br/><br/> 
 

 
<table id='example'> 
 
<thead> 
 
    \t <tr><th>Потребител</th><th>Училище</th><th>Клас</th><th>Анкета</th><th>Въпрос</th><th>Отговор</th></tr> 
 
    </thead> 
 
    <tfoot> 
 
      <tr> 
 
       <th>Потребител</th> 
 
       <th>Училище</th> 
 
       <th>Клас</th> 
 
       <th>Анкета</th> 
 
       <th>Въпрос</th> 
 
       <th>Отговор</th> 
 
      </tr> 
 
     </tfoot> 
 
    <tbody> 
 

 
<?php 
 

 
foreach ($student_results as $row) 
 
{ 
 

 
?> 
 
\t <tr><td> 
 
\t <?php echo $row->username; ?> 
 
\t </td><td> 
 
\t <?php echo $row->school; ?> 
 
\t </td><td> 
 
\t <?php echo $row->class; ?> 
 
\t </td><td> 
 
\t <?php echo $row->survey_id; ?> 
 
    \t </td><td> 
 
    \t <?php echo $row->question_id; ?> 
 
    \t </td><td> 
 
    \t <?php echo $row->answer; ?> 
 
    \t </td></tr> 
 
    \t <?php 
 
} 
 
?> 
 
\t 
 
\t </table> 
 

 
\t <table border='1' id='example'> 
 
\t <tr><th>Въпрос</th><th>Среден резултат</th></tr> 
 
<?php 
 
foreach ($average_results as $row) 
 
{ 
 
?> \t 
 
    \t <td> 
 
    \t <?php echo $row->question_id ; ?> 
 
    \t </td><td> 
 
    \t <?php echo round("$row->answer",2); ?> 
 
    \t </td></tr> 
 
    \t <?php 
 
} 
 
?> 
 
</tbody> 
 
\t </table> 
 

 

 

 
\t </div> 
 
\t </body> 
 
\t </html>

ответ

2

Вы должны предназначаться все нужные кнопки, когда вы используете этот подход. Просто наличие "xls" разбивает все.

aButtons: [ 
    { sExtends: "csv", 
     sFileName: 'download.csv', 
     sFieldSeperator: "," //<--- example of how to set the delimiter 
    }, 
    { sExtends: "xls", 
     sFileName: 'download.xls' 
    }, 
    { sExtends: "pdf", 
     sFileName: 'download.pdf' 
    } 
] 
+0

Я не знаю, почему, если я использую этот тип кода для aButtons, только первая кнопка загружает файл и в этом случае с вашим кодом, когда я нажимаю на первую кнопку для CSV-файла, он загружает PDF файл. Я много раз пробовал ... –

+0

@iveto - удалить все, что у вас есть, и использовать только что выше. Я не думаю, что нажатие на кнопку CSV создает PDF-файл, если у вас нет кода, дублирующего поведение кнопок. – davidkonrad

+0

Я удалил кеш, но он все тот же. –

Смежные вопросы