jiekexuan 发表于 2015-12-4 15:44:00

CI 导出Excel的问题!!!

我的代码导出EXCEL没有任何问题也就是代码里面使用$objWrite->save("E://aaa.xlsx");能正常生产文件也能正常打开,但是如果我的代码改为如下
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
      header('Content-Disposition: attachment;filename="广告排期'.$month.'月.xlsx"');
      header('Cache-Control: max-age=0');
      $objWrite=PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel2007');
      $objWrite->save("php://output");

也就是输出到浏览器里面,让用户下载。可以下载生成文件,但是就是打不开,打开如图片。下面是我的CI完整的代码

require FCPATH.'static\PHPExcel\PHPExcel.php';
      //require FCPATH.'application\libraries\PHPExcel\IOFactory.php';
      $this->ad_model->where_in=array('position_id'=>array(1,2));
      $list=$this->ad_model->get_all('position_id,cat_id,sort_order');

      $week=array('日','一','二','三','四','五','六');
      $cat=array('0'=>'首页','1'=>'汽车','2'=>'金融','3'=>'家居','4'=>'旅游','11'=>'阔论');
      $styleArray = array('borders' => array('outline' => array('style' => PHPExcel_Style_Border::BORDER_THIN,'color' => array('rgb' => '000000'),),),);
      $objPHPExcel=new PHPExcel();//实例化PHPExcel
      $objsheet=$objPHPExcel->getActiveSheet();
      $objsheet->setTitle('广告排期');
      $year=2015;$month=11;
      $day=$this->getday($year,$month);
      $initial='B';
      $today=strtotime(date('Y-m-d').' 00:00:00');

      for ($i=1;$i<=$day;$i++)
      {
            $objsheet->setCellValue($initial.'1',$week);
            $objsheet->setCellValue($initial.'2',$i);
            $initial++;
      }
      $j=3;
      foreach ($list as $key => $value)
      {
            if($value['position_id']==1)
            {$objsheet->setCellValue('A'.$j,'开屏广告');}
            else
            {$objsheet->setCellValue('A'.$j,$cat[$value['cat_id']].'轮番图'.$value['sort_order']);}
            $j++;
            $n='B';
            for ($c=1; $c <=$day ; $c++) {
                $timestramp=strtotime($year.'-'.$month.'-'.$c.' 00:00:00');
                if($timestramp>=$value['start_time']&&$timestramp<=$value['end_time'])
                {
                  if($today>$value['end_time'])
                  {
                        //$objsheet->setCellValue($n.$j,'grey');
                        $objsheet->getStyle($n.$j)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB('cdcdcd');
                        $objsheet->getStyle($n.$j)->applyFromArray($styleArray);
                  }
                  else
                  {
                        //$objsheet->setCellValue($n.$j,'yellow');
                        $objsheet->getStyle($n.$j)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB('ffcb00');
                        $objsheet->getStyle($n.$j)->applyFromArray($styleArray);
                  }
                }
                else
                {
                  //$objsheet->setCellValue($n.$j,'white');
                  $objsheet->getStyle($n.$j)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB('FFFAFA');
                  $objsheet->getStyle($n.$j)->applyFromArray($styleArray);
                }
            $n++;

          }
      }
      header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
      header('Content-Disposition: attachment;filename="广告排期'.$month.'月.xlsx"');
      header('Cache-Control: max-age=0');
      $objWrite=PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel2007');
      $objWrite->save("php://output");


jiekexuan 发表于 2015-12-4 16:20:45

同样我使用PHPExcel的例子一切正常,但是当我把PHPExcel例子弄到CI里面就出现同样的问题。

crazyci 发表于 2015-12-22 10:36:36

有点意思
页: [1]
查看完整版本: CI 导出Excel的问题!!!