duanlun1955 2013-06-11 13:38
浏览 35
已采纳

PHPExcel多表格

I have a site where I want to create a report file with PHPExcel. I make two cycle one for the first sheet where I have a week summary, and another cycle for every day of the week. I retrieve this error with my script:

Catchable fatal error: Argument 1 passed to PHPExcel_IOFactory::createWriter() must be an instance of PHPExcel, null given, called in /var/www/reports/generate_reports_settimanale.php on line 79 and defined in /var/www/inc/PHPExcel/IOFactory.php on line 132

This is my simplified code:

require_once '../inc/PHPExcel.php';
require_once '../inc/PHPExcel/IOFactory.php';

objPHPExcel = new PHPExcel();

        // Set document properties
        $objPHPExcel->getProperties()->setCreator("Alessandro Minoccheri")
                                     ->setLastModifiedBy("Alessandro Minoccheri")
                                     ->setTitle("Office 2007 XLSX Test Document")
                                     ->setSubject("Office 2007 XLSX Test Document")
                                     ->setDescription("Generazione report inverter")
                                     ->setKeywords("office 2007 openxml php")
                                     ->setCategory("");

        $row=1;
        $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow('0', $row, 'Inverter');
        $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow('1', $row, 'Channel');


            $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow('0', 1, 'inverter');
        $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow('1', 1, 'channel');

            $objPHPExcel->setActiveSheetIndex(0);
        $objWriter3 = PHPExcel_IOFactory::createWriter($objPHPExcel3, 'Excel5');

            $week_end = date( 'Y-m-d 23:59:59', $start + ( 6 * 86400 ) );
            $week_start = date( 'Y-m-d 00:00:00', $start );
            $date = $week_start;
        while (strtotime($date) <= strtotime($week_end)) {
            $date = date ("Y-m-d", strtotime("+1 day", strtotime($date)));
            $objWorkSheet = $objPHPExcel->createSheet($date); //Setting index when creating

            //Write cells
            $objWorkSheet->setCellValue('A1', 'Hello'.$i)
                    ->setCellValue('B2', 'world!')
                    ->setCellValue('C1', 'Hello')
                    ->setCellValue('D2', 'world!');

            // Rename sheet
            $objWorkSheet->setTitle("test");
        }

            header('Content-Type: application/vnd.ms-excel');
        header('Content-Disposition: attachment;filename="report.xls"');
        header('Cache-Control: max-age=0');
        $objWriter3->save('php://output');

How can I solve this?

  • 写回答

1条回答 默认 最新

  • doubi1910 2013-06-11 13:41
    关注
     $objPHPExcel->setActiveSheetIndex(0);
     $objWriter3 = PHPExcel_IOFactory::createWriter($objPHPExcel3, 'Excel5');
    

    As the error says... $objPHPExcel3 doesn't exist yet. So far you've only used $objPHPExcel in your script. You're sending it a NULL value. (And upon reviewing the code I don't see you ever create a $objPHPExcel3)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么