数据表下载 xls/csv 文件无法正常工作
Data Tables download xls/csv file not working properly
我想要 3 个按钮 - 用于下载 csv、xls 和 pdf 文件。在我的例子中,当我点击下载 csv 文件按钮时,它保存为 csv 文件的扩展名,但是当我打开它时它是 excel - 它不是逗号分隔的文件。 PDF 下载按钮工作正常。 xls 按钮不起作用 - 它根本不可点击。我试着写这段代码:
"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',
"tableTools": {
"sSwfPath": "http://cdn.datatables.net/tabletools/2.2.2/swf/copy_csv_xls_pdf.swf",
aButtons: [
{ sExtends: "csv",
sFileName: 'download.csv',
sFieldSeperator: ","
},
{ sExtends: "xls",
sFileName: 'download.xls'
},
{ sExtends: "pdf",
sFileName: 'download.pdf'
}
]
}
} );
} );
</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>
<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)
{
?>
<tr><td>
<?php echo $row->username; ?>
</td><td>
<?php echo $row->school; ?>
</td><td>
<?php echo $row->class; ?>
</td><td>
<?php echo $row->survey_id; ?>
</td><td>
<?php echo $row->question_id; ?>
</td><td>
<?php echo $row->answer; ?>
</td></tr>
<?php
}
?>
</table>
<table border='1' id='example'>
<tr><th>Въпрос</th><th>Среден резултат</th></tr>
<?php
foreach ($average_results as $row)
{
?>
<td>
<?php echo $row->question_id ; ?>
</td><td>
<?php echo round("$row->answer",2); ?>
</td></tr>
<?php
}
?>
</tbody>
</table>
</div>
</body>
</html>
使用此方法时,您需要定位所有需要的按钮。只要有一个 "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'
}
]
我想要 3 个按钮 - 用于下载 csv、xls 和 pdf 文件。在我的例子中,当我点击下载 csv 文件按钮时,它保存为 csv 文件的扩展名,但是当我打开它时它是 excel - 它不是逗号分隔的文件。 PDF 下载按钮工作正常。 xls 按钮不起作用 - 它根本不可点击。我试着写这段代码:
"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',
"tableTools": {
"sSwfPath": "http://cdn.datatables.net/tabletools/2.2.2/swf/copy_csv_xls_pdf.swf",
aButtons: [
{ sExtends: "csv",
sFileName: 'download.csv',
sFieldSeperator: ","
},
{ sExtends: "xls",
sFileName: 'download.xls'
},
{ sExtends: "pdf",
sFileName: 'download.pdf'
}
]
}
} );
} );
</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>
<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)
{
?>
<tr><td>
<?php echo $row->username; ?>
</td><td>
<?php echo $row->school; ?>
</td><td>
<?php echo $row->class; ?>
</td><td>
<?php echo $row->survey_id; ?>
</td><td>
<?php echo $row->question_id; ?>
</td><td>
<?php echo $row->answer; ?>
</td></tr>
<?php
}
?>
</table>
<table border='1' id='example'>
<tr><th>Въпрос</th><th>Среден резултат</th></tr>
<?php
foreach ($average_results as $row)
{
?>
<td>
<?php echo $row->question_id ; ?>
</td><td>
<?php echo round("$row->answer",2); ?>
</td></tr>
<?php
}
?>
</tbody>
</table>
</div>
</body>
</html>
使用此方法时,您需要定位所有需要的按钮。只要有一个 "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'
}
]