qq2317894314

导出方法一  使用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 }

 

分类:

技术点:

相关文章:

  • 2021-05-03
  • 2022-12-23
  • 2022-12-23
  • 2022-02-02
  • 2021-12-05
  • 2022-12-23
猜你喜欢
  • 2022-02-10
  • 2021-11-30
  • 2021-11-20
  • 2022-12-23
  • 2021-12-03
  • 2021-12-05
相关资源
相似解决方案