• PHPExcel插件生成exel表:有的excel能打开,有的excel打不开


    PHPExcel导出xls无法打开文件问题

    在header之前,通过清除缓冲区:ob_end_clean();然后excel打开就正常了;亲测,有效。

    PHPExcel插件生成exel表:有的excel能打开,有的excel打不开;

    如图

    修改代码,在导出的时候添加:ob_end_clean();

    public function AntiExportData($list)
        {
    //        error_reporting(0);
     
            $objPHPExcel = new \PHPExcel();
     
            //设置文件的一些属性,在xls文件——>属性——>详细信息里可以看到这些值,xml表格里是没有这些值的
            $objPHPExcel
                ->getProperties()  //获得文件属性对象,给下文提供设置资源
                ->setCreator( "MaartenBalliauw")             //设置文件的创建者
                ->setLastModifiedBy( "MaartenBalliauw")       //设置最后修改者
                ->setTitle( "Office2007 XLSX Test Document" )    //设置标题
                ->setSubject( "Office2007 XLSX Test Document" )  //设置主题
                ->setDescription( "Test document for Office2007 XLSX, generated using PHP classes.") //设置备注
                ->setKeywords( "office 2007 openxmlphp")        //设置标记
                ->setCategory( "Test resultfile");                //设置类别
            // 位置aaa *为下文代码位置提供锚
            //给表格添加数据
     
            $objPHPExcel->setActiveSheetIndex(0)//表头的信息
            ->setCellValue('A1', "ID")
                ->setCellValue('B1', "防伪码")
                ->setCellValue('C1', "序列号")
                ->setCellValue('D1', "可获得积分")
                ->setCellValue('E1', "状态")
                ->setCellValue('F1', "会员")
                ->setCellValue('G1', "查询时间")
                ->setCellValue('H1', "导入时间");
            $i=2;
            foreach ($list as $key => $value) {
                if ($value['state'] == 1){
                    $state = '已查询';
                }else{
                    $state = '未查询';
                }
                if ($value['state'] == 1 && $value['nickname']){
                    $nickname = $value['nickname'].'(已兑换)';
                }else{
                    $nickname = '未兑换';
                }
                if ($value['export_time'] == null){
                    $export_time = '';
                }else{
                    $export_time = date("Y-m-d H:i:s", $value['export_time']);
                }
                if ($value['import_time'] == null){
                    $import_time = '';
                }else{
                    $import_time = date("Y-m-d H:i:s", $value['import_time']);
                }
                $objPHPExcel->getActiveSheet()             //     设置第一个内置表(一个xls文件里可以有多个表)为活动的
                ->setCellValue( 'A'.$i, $value['id'] )       //给表的单元格设置数据
                ->setCellValue( 'B'.$i, $value['anti_counterfeiting_code'] )       //给表的单元格设置数据
                ->setCellValue( 'C'.$i, $value['serial_number'] )
                ->setCellValue( 'D'.$i, $value['integral'])
                ->setCellValue( 'E'.$i, $state )
                ->setCellValue( 'F'.$i, $nickname )
                ->setCellValue( 'G'.$i, $export_time)           //布尔型
                ->setCellValue( 'H'.$i, $import_time);
                $i++;
            }
     
            //公式
     
            //得到当前活动的表,注意下文教程中会经常用到$objActSheet
            $objActSheet =$objPHPExcel->getActiveSheet();
            // 位置bbb *为下文代码位置提供锚
            //给当前活动的表设置名称
            $objActSheet->setTitle('Simple2222');
            //代码还没有结束,可以复制下面的代码来决定我们将要做什么
            ob_end_clean();
            //1,直接生成一个文件
            $objWriter =\PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
            $objWriter->save('myexchel.xlsx');
            header('Content-Type:application/vnd.ms-excel');
            header('Content-Disposition:attachment;filename="防伪数据.xls"');
            header('Cache-Control:max-age=0');
            $objWriter =\PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
            $objWriter->save('php://output');
            return $this->render($this->actionID);
        }
    

      

    亲测,有效。

  • 相关阅读:
    git stash
    vim 使用
    git 分支管理
    git 日常使用
    js createElement
    git checkout
    2.2链表 链表中倒数第k个结点
    1.8字符串及分析 翻转子串
    全排列
    1.7数组 清除行列
  • 原文地址:https://www.cnblogs.com/achengmu/p/16460308.html
Copyright © 2020-2023  润新知