导出方法一 使用table输出导出
1 //导出代码 2 public function export(){ 3 set_time_limit(0); 4 ini_set('memory_limit','1024M');//设置导出最大内存 5 $ranking = self::getResult();//获得需要导出的数据 6 //输出的表头 7 $_pre = array( 8 "listing" => "ListingID", 9 "salesbefore" => "前十天销量", 10 "salesafter" => "后十天销量", 11 "saleschange" => "涨跌销量", 12 "percentchange" => "涨跌幅度(%)", 13 ); 14 $date = date("YmdHis");//日期作为输出文件后缀 15 $content = getXLSFromList($_pre,$ranking);//获得输出的表格内容 16 header("Content-type:application/vnd.ms-execl;charset=gb2312");//设置导出格式 17 header("Content-Disposition:attactment;filename=销量变化排行榜".$date.".xls");//设置导出文件名 18 header("Pragma: no-cache"); 19 header("Expires: 0"); 20 echo $content; 21 exit; 22 }
1 //此方法建议写入公共方法 通过数组遍历得出导出报表类型结构 2 function getXLSFromList($pres,$lists){ 3 // 内容太大建议搜索少量再导出 4 // if(count($lists)>=20000) 5 // { 6 // header("Content-Type:text/html;charset=utf-8"); 7 // echo "<br/><h1 style='color:red'>Export data is too large, please narrow your search!</h1><br/>"; 8 // exit; 9 // } 10 $keys=array_keys($pres);//获取表头的键名 11 $content=""; 12 $content.="<table border='1'><tr>"; 13 //输出表头键值 14 foreach($pres as $_pre){ 15 $content.="<td>$_pre</td>"; 16 } 17 $content.="</tr>"; 18 foreach($lists as $_list){ 19 $content.= "<tr>"; 20 foreach($keys as $key){ 21 $content.= "<td style='vnd.ms-excel.numberformat:@'>".$_list[$key]."</td>"; //style样式将导出的内容都设置为文本格式 输出对应键名的键值 即内容 22 } 23 $content.="</tr>"; 24 } 25 $content.="</table>"; 26 return $content; 27 }
导出方法二 使用PHPExcel导出
1 public function export(){ 2 set_time_limit(0); 3 ini_set('memory_limit','1024M'); 4 $ranking = self::getResult(); //获取需要导出的内容 5 include_once(EXTEND_PATH . 'Library/ORG/PHPExcel/PHPExcel.class.php'); //引入PHPExcel文件 6 $objPHPExcel = new PHPExcel(); 7 //设置文件的一些属性,在xls文件——>属性——>详细信息里可以看到这些值 8 $objPHPExcel->getProperties()->setCreator("ctos") 9 ->setLastModifiedBy("ctos") 10 ->setTitle("Office 2007 XLSX Test Document") 11 ->setSubject("Office 2007 XLSX Test Document") 12 ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") 13 ->setKeywords("office 2007 openxml php") 14 ->setCategory("Test result file"); 15 //设置列宽 16 $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(15); 17 $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(15); 18 $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20); 19 $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20); 20 $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(20); 21 //设置水平居中显示 22 $objPHPExcel->getActiveSheet()->getStyle('A')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); 23 $objPHPExcel->getActiveSheet()->getStyle('B')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); 24 $objPHPExcel->getActiveSheet()->getStyle('C')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); 25 $objPHPExcel->getActiveSheet()->getStyle('D')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); 26 $objPHPExcel->getActiveSheet()->getStyle('E')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); 27 $objPHPExcel->setActiveSheetIndex(0) // set table header content 28 ->setCellValue('A1', 'Listing ID') 29 ->setCellValue('B1', '前十天销量') 30 ->setCellValue('C1', '后十天销量') 31 ->setCellValue('D1', '涨跌销量') 32 ->setCellValue('E1', '涨跌幅度(%)') 33 $a = 1; //设置默认值 34 foreach($ranking as $k){ 35 $a++; 36 $objPHPExcel->setActiveSheetIndex(0) 37 ->setCellValueExplicit('A'.$a, $k['listing'],PHPExcel_Cell_DataType::TYPE_STRING)//设置数字的科学计数法显示为文本 38 ->setCellValue('B'.$a, $k['salesbefore']) 39 ->setCellValue('C'.$a, $k['salesafter']) 40 ->setCellValue('D'.$a, $k['saleschange']) 41 ->setCellValue('E'.$a, $k['percentchange']) 42 //设置自动换行 43 $objPHPExcel->getActiveSheet()->getStyle("A$a")->getAlignment()->setWrapText(true); 44 $objPHPExcel->getActiveSheet()->getStyle("B$a")->getAlignment()->setWrapText(true); 45 } 46 $objPHPExcel->getActiveSheet()->setTitle('销量变化排行榜'); 47 $objPHPExcel->setActiveSheetIndex(0); 48 // excel头参数 49 header('Content-Type: application/vnd.ms-excel'); 50 header('Content-Disposition: attachment;filename="销量变化排行榜('.date('YmdHis').').xls"'); //日期为文件名后缀 51 header('Cache-Control: max-age=0'); 52 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); //excel5为xls格式,excel2007为xlsx格式 53 $objWriter->save('php://output'); 54 }