用户
 找回密码
 入住 CI 中国社区
搜索
查看: 1681|回复: 2
收起左侧

[版本 2.x] CI 导出Excel的问题!!!

[复制链接]
发表于 2015-12-4 15:44:00 | 显示全部楼层 |阅读模式
我的代码导出EXCEL没有任何问题也就是代码里面使用$objWrite->save("E://aaa.xlsx");能正常生产文件也能正常打开,但是如果我的代码改为如下
  1. header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
  2.         header('Content-Disposition: attachment;filename="广告排期'.$month.'月.xlsx"');
  3.         header('Cache-Control: max-age=0');
  4.         $objWrite=PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel2007');
  5.         $objWrite->save("php://output");
复制代码


也就是输出到浏览器里面,让用户下载。可以下载生成文件,但是就是打不开,打开如图片。下面是我的CI完整的代码
PHP复制代码
 
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[date('w',strtotime($year.'-'.$month.'-'.$i))]);
            $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");
 
 
复制代码

QQ截图20151204154024.png
 楼主| 发表于 2015-12-4 16:20:45 | 显示全部楼层
同样我使用PHPExcel的例子一切正常,但是当我把PHPExcel例子弄到CI里面就出现同样的问题。

本版积分规则