为什么 PHPexecl 导出的表格下面是一片空白?

为什么 PHPexecl 导出的表格下面是一片空白?

clipboard.png

 public function export_order_bill() 
    {
        $objPHPExcel = new PHPExcel();
        
        // Set the excel property
        $objPHPExcel->getProperties()->setCreator("wboll")
        ->setLastModifiedBy("wboll")
        ->setTitle("Office 2007 XLSX Document")
        ->setSubject("Office 2007 XLSX Document")
        ->setDescription("Document for Office 2007 XLSX, generated using PHP classes.")
        ->setKeywords("office 2007 openxml php")
        ->setCategory("Test result file");

        if ( $this->thead ) {
            foreach ( $this->thead as $key => $value ) {
                // 设置头部
                $objPHPExcel->createSheet();
                $objPHPExcel->setActiveSheetIndex($key);

                // 设置字体和字体大小
                $objPHPExcel->getActiveSheet()->getDefaultStyle()->getFont()->setSize(11);
                $objPHPExcel->getDefaultStyle()->getFont()->setName('宋体');

                // 设置通用的宽度和高度
                for ($i=0; $i < count($value); $i++) { 
                     // 设置单元格宽度
                     $objPHPExcel->getActiveSheet()->getColumnDimension($this->letters[$i])->setWidth(22);
                     // 设置单元格高度
                     $objPHPExcel->getActiveSheet()->getRowDimension($i+1)->setRowHeight(16);
                }

                if ( $this->mergearray ) {
                    foreach ( $this->mergearray[$key] as $k => $v) {
                       
                        $merge = explode(':', $k);
                        $objPHPExcel->getActiveSheet()->setCellValue($merge[0], $v);
                        //合并单元格
                        $objPHPExcel->getActiveSheet()->mergeCells($k);
                        //设置居中
                        $objPHPExcel->getActiveSheet()->getStyle($k)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
                        $objPHPExcel->getActiveSheet()->getStyle($k)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
                    }
                }
                
                //内容部分
                // 头部
                foreach ($value as $kk => $vv) {
                    $letters = '';
                    $letters = $this->letters[$kk];
                    // 设置内容
                    $objPHPExcel->getActiveSheet()->setCellValue($letters.'2', $vv);
                    //设置居中
                    $objPHPExcel->getActiveSheet()->getStyle($letters.'2')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
                    $objPHPExcel->getActiveSheet()->getStyle($letters.'2')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
                
                    if ( $this->data ) {
                        foreach ($this->data[$key] as $kkk => $vvv) {
                            // 设置内容
                            $objPHPExcel->getActiveSheet()->setCellValue($letters.(3+$kkk), $vvv[$this->fieldname[$key][$kk]]);
                            //设置居中
                            $objPHPExcel->getActiveSheet()->getStyle($letters.(3+$kkk))->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
                            $objPHPExcel->getActiveSheet()->getStyle($letters.(3+$kkk))->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
                            
                        }
                    }
                }
                $objPHPExcel->getActiveSheet()->setTitle($this->ismerge[$key]);
            }
        }

        // Set active sheet index to the first sheet, so Excel opens this as the first sheet
        $objPHPExcel->setActiveSheetIndex(0);
        // ob_end_clean();

        // 执行导出
        // header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        header('Content-Type: application/vnd.ms-excel');
        // header('Content-Disposition: attachment;filename="' . $this->exportfilename.date("YmdHis") . '.xls"');
        header('Content-Disposition: attachment;filename="订单' . date("YmdHis") . '.xls"');
        header('Cache-Control: max-age=0');
        
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
        // $objWriter->save('php://output');
        $objWriter->save('/tmp/'.$this->exportfilename);
    }
阅读 3.7k
3 个回答
新手上路,请多包涵

Excel5 改成 Excel2007

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题