现在的位置: 首页 > 综合 > 正文

实现CakePHP+csv导出功能

2017年10月05日 ⁄ 综合 ⁄ 共 7639字 ⁄ 字号 评论关闭

Controller的代码:

public function statExport(){
$statTable = $this->request->params['named']['statTable'];
if (isset($statTable)){
$statProductInstanceName = $this->request->params['named']['statProductInstanceName'];
$statImeiCode = $this->request->params['named']['statImeiCode'];
$statSoftwareVersion1 = $this->request->params['named']['statSoftwareVersion1'];
$statSoftwareVersion2 = $this->request->params['named']['statSoftwareVersion2'];
$statOperationName = $this->request->params['named']['statOperationName'];
$statStatusType = $this->request->params['named']['statStatusType'];
$statClientTypeName = $this->request->params['named']['statClientTypeName'];
$statRootFlagValue = $this->request->params['named']['statRootFlagValue'];
$statConnectTypeValue = $this->request->params['named']['statConnectTypeValue'];
$statCheckTypeValue = $this->request->params['named']['statCheckTypeValue'];
$statDatetime = $this->request->params['named']['statDatetime'];

$sql = 'SELECT Stat.stat_id, StatProductInstance.stat_productinstance_name, StatImei.stat_imei_code, StatSoftware1.stat_software_version, StatSoftware2.stat_software_version, StatOperation.stat_operation_name, StatStatus.stat_status_type,
StatClientType.stat_clienttype_name, StatRootFlag.stat_root_flag_value, StatConnectType.stat_connect_type_value, StatCheckType.stat_check_type_value, Stat.stat_datetime 
FROM stat_' . $statTable . ' Stat 
LEFT JOIN stat_productinstance StatProductInstance ON Stat.stat_productinstance_id = StatProductInstance.stat_productinstance_id 
LEFT JOIN stat_imei StatImei ON Stat.stat_imei_id = StatImei.stat_imei_id
LEFT JOIN stat_software StatSoftware1 ON Stat.stat_from_software_id = StatSoftware1.stat_software_id 
LEFT JOIN stat_software StatSoftware2 ON Stat.stat_to_software_id = StatSoftware2.stat_software_id 
LEFT JOIN stat_operation StatOperation ON Stat.stat_operation_id = StatOperation.stat_operation_id 
LEFT JOIN stat_status StatStatus ON Stat.stat_status_id = StatStatus.stat_status_id 
LEFT JOIN stat_clienttype StatClientType ON Stat.stat_clienttype_id = StatClientType.stat_clienttype_id 
LEFT JOIN
stat_root_flag StatRootFlag ON Stat.stat_root_flag = StatRootFlag.stat_root_flag_id 
LEFT JOIN stat_connect_type StatConnectType ON Stat.stat_connect_type = StatConnectType.stat_connect_type_id 
LEFT JOIN stat_check_type StatCheckType ON Stat.stat_check_type = StatCheckType.stat_check_type_id 
WHERE 1 = 1 
';

if (!empty($statProductInstanceName)) {
$sql .= " AND StatProductInstance.stat_productinstance_name LIKE '%". $statProductInstanceName . "%' ";
}
if (!empty($statImeiCode)) {
$sql .= " AND StatImei.stat_imei_code LIKE  '%". $statImeiCode . "%' ";
}
if (!empty($statSoftwareVersion1)) {
$sql .= " AND StatSoftware1.stat_software_version LIKE  '%". $statSoftwareVersion1 . "%' ";
}
if (!empty($statSoftwareVersion2)) {
$sql .= " AND StatSoftware2.stat_software_version LIKE '%". $statSoftwareVersion2 . "%' ";
}
if (!empty($statOperationName)) {
$sql .= " AND StatOperation.stat_operation_name LIKE  '%". $statOperationName . "%' ";
}
if (!empty($statStatusType)) {
$sql .= "  AND StatStatus.stat_status_type LIKE '%". $statStatusType . "%' ";
}
if (!empty($statClientTypeName)) {
$sql .= " AND StatClientType.stat_clienttype_name LIKE  '%". $statClientTypeName . "%' ";
}
if (!empty($statRootFlagValue)) {
$sql .= " AND StatRootFlag.stat_root_flag_value  LIKE  '%". $statRootFlagValue . "%'  ";
}
if (!empty($statConnectTypeValue)) {
$sql .= " AND StatConnectType.stat_connect_type_value  LIKE  '%". $statConnectTypeValue . "%'  ";
}
if (!empty($statCheckTypeValue)) {
$sql .= " AND StatCheckType.stat_check_type_value  LIKE  '%". $statCheckTypeValue . "%'  ";
}
if (!empty($statDatetime)) {
$sql .= " AND TO_DAYS(FROM_UNIXTIME(Stat.stat_datetime)) = to_days('". $statDatetime . "') ";
}
echo '<br>' . $sql . '<br>';
 
$results = $this->Stat->query($sql);

$filename = date("Y-m-d_His")."_by_day_report_".$statTable.".csv";
$content = "ID,Product Instance,IMEI,From,To,Operation,Status,Client Type,Root,Connect Type,Check Type,DateTime\n";

foreach($results as $stat){
$statId = isset($stat['Stat']['stat_id']) ? $stat['Stat']['stat_id'] : 0;
$statProductInstanceName = isset($stat['StatProductInstance']['stat_productinstance_name']) ? $stat['StatProductInstance']['stat_productinstance_name'] : 0;
$statImeiCode = isset($stat['StatImei']['stat_imei_code']) ? $stat['StatImei']['stat_imei_code'] : 0;
$statSoftwareVersion1 = isset($stat['StatSoftware1']['stat_software_version']) ? $stat['StatSoftware1']['stat_software_version'] : 0;
$statSoftwareVersion2 = isset($stat['StatSoftware2']['stat_software_version']) ? $stat['StatSoftware2']['stat_software_version'] : 0;
$statOperationName = isset($stat['StatOperation']['stat_operation_name']) ? $stat['StatOperation']['stat_operation_name'] : 0;
$statStatusType = isset($stat['StatStatus']['stat_status_type']) ? $stat['StatStatus']['stat_status_type'] : 0;
$statClientTypeName = isset($stat['StatClientType']['stat_clienttype_name']) ? $stat['StatClientType']['stat_clienttype_name'] : 0;
$statRootFlagValue = isset($stat['StatRootFlag']['stat_root_flag_value']) ? $stat['StatRootFlag']['stat_root_flag_value'] : 0;
$statConnectTypeValue = isset($stat['StatConnectType']['stat_connect_type_value']) ? $stat['StatConnectType']['stat_connect_type_value'] : 0;
$statCheckTypeValue = isset($stat['StatCheckType']['stat_check_type_value']) ? $stat['StatCheckType']['stat_check_type_value'] : 0;
$statDatetime = isset($stat['Stat']['stat_datetime']) ? $stat['Stat']['stat_datetime'] : 0;
$statDateTimeFormat = date('Y-m-d H:i:s',$statDatetime);

$content .= $statId .",". $statProductInstanceName .",". $statImeiCode .",". $statSoftwareVersion1 .",". $statSoftwareVersion2 .",". $statOperationName .",". 
$statStatusType .",". $statClientTypeName .",". $statRootFlagValue .",". $statConnectTypeValue .",". $statCheckTypeValue .",". $statDateTimeFormat . "\n";

}

$this->exportCSV($filename, $content);
exit;

} else {
exit;
}

}

private function exportCSV($filename,$data) { 
   header("Content-type:text/csv"); 
   header("Content-Disposition:attachment;filename=".$filename); 
   header('Cache-Control:must-revalidate,post-check=0,pre-check=0'); 
   header('Expires:0'); 
   header('Pragma:public'); 
   echo $data; 

statExport.ctp

<a id="export" href="" target="_blank" >Export</a>

<script type="text/javascript">
$(document).ready(function(){
$('button[type="submit"]').click(function(){
if($('#StatStatProduct').val() == ""){
customizeMessageBox(3,1,'Warning','Product should not be empty.');
}else{
$('#StatIndexForm').submit();
}
return false;
});
$('#export').click(function(){
if($('#StatStatProduct').val() == ""){
customizeMessageBox(3,1,'Warning','Product should not be empty.');
return false;
} else {
var statTable= $('#StatStatProduct').find('option:selected').text();
var statProductInstanceName = $('#StatProductInstanceStatProductinstanceName').val();
var statImeiCode = $('#StatImeiStatImeiCode').val();
var statSoftwareVersion1 = $('#StatSoftware1StatSoftwareVersion').val();
var statSoftwareVersion2 = $('#StatSoftware2StatSoftwareVersion').val();
var statOperationName = $('#StatOperationStatOperationName').val();
var statStatusType = $('#StatStatusStatStatusType').val();
var statClientTypeName = $('#StatClientTypeStatClienttypeName').val();
var statRootFlagValue = $('#StatStatRootFlag').find('option:selected').text();;
var statConnectTypeValue = $('#StatStatConnectType').find('option:selected').text();;
var statCheckTypeValue = $('#StatStatCheckType').find('option:selected').text();;
var statDatetime = $('#StatStatDatetime').val();
var exportHref = 'stats/statExport/statTable:' + statTable + '/statProductInstanceName:' + statProductInstanceName + '/statImeiCode:' + statImeiCode
+ '/statSoftwareVersion1:' + statSoftwareVersion1 + '/statSoftwareVersion2:' + statSoftwareVersion2 + '/statOperationName:' + statOperationName + '/statStatusType:' + statStatusType 
+ '/statClientTypeName:' + statClientTypeName + '/statRootFlagValue:' + statRootFlagValue + '/statConnectTypeValue:' + statConnectTypeValue 
+ '/statCheckTypeValue:' + statCheckTypeValue + '/statDatetime:' + statDatetime ;
alert(exportHref);
$('#export').attr('href', exportHref);
}
});
}); 
</script>

抱歉!评论已关闭.