Я хочу иметь 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>
Я не знаю, почему, если я использую этот тип кода для aButtons, только первая кнопка загружает файл и в этом случае с вашим кодом, когда я нажимаю на первую кнопку для CSV-файла, он загружает PDF файл. Я много раз пробовал ... –
@iveto - удалить все, что у вас есть, и использовать только что выше. Я не думаю, что нажатие на кнопку CSV создает PDF-файл, если у вас нет кода, дублирующего поведение кнопок. – davidkonrad
Я удалил кеш, но он все тот же. –