Đây là cách tiếp cận của tôi, chỉ cần thêm mã này vào file js/html của bạn
$("#list").jqGrid('navGrid', '#pager',{view:true, del:false, add:false, edit:false, excel:true})
.navButtonAdd('#pager',{
caption:"Export to Excel",
buttonicon:"ui-icon-save",
onClickButton: function(){
exportExcel();
},
position:"last"
});
function exportExcel()
{
var mya=new Array();
mya=$("#list").getDataIDs(); // Get All IDs
var data=$("#list").getRowData(mya[0]); // Get First row to get the labels
var colNames=new Array();
var ii=0;
for (var i in data){colNames[ii++]=i;} // capture col names
var html="";
for(i=0;i<mya.length;i++)
{
data=$("#list").getRowData(mya[i]); // get each row
for(j=0;j<colNames.length;j++)
{
html=html+data[colNames[j]]+"\t"; // output each column as tab delimited
}
html=html+"\n"; // output each row with end of line
}
html=html+"\n"; // end of line at the end
document.forms[0].csvBuffer.value=html;
document.forms[0].method='POST';
document.forms[0].action='csvExport.php'; // send it to server which will open this contents in excel file
document.forms[0].target='_blank';
document.forms[0].submit();
}
PHP script
header('Content-type: application/vnd.ms-excel');
header("Content-Disposition: attachment; filename=file.xls");
header("Pragma: no-cache");
$buffer = $_POST['csvBuffer'];
try{
echo $buffer;
}catch(Exception $e){
}
Cảm ơn bạn đã chia sẻ mã của bạn Felix Guerrero. Tôi có một vấn đề: khi tôi chạy mã của bạn tôi nhận được lỗi này: document.forms [0] .csvBuffer là không xác định, bạn có thể giúp tôi sửa lỗi này? –
Mã này dường như chỉ xem xét các hàng hiển thị, bạn có gợi ý nào về cách lấy danh sách đầy đủ (tức là không chỉ các hàng trong trang hiện tại) không? – Don
Việc này có lấy dữ liệu từ đầu sau không? Tôi cho là không .. –