新版本的phpoffice/phpspreadsheet没装上,没有zip扩展报错,Excel2007需要用到这个扩展:
composer require phpoffice/phpspreadsheet先用老版本的装上。
composer require phpoffice/phpexcel require '../vendor/autoload.php'; use PHPExcel; use PHPExcel_IOFactory; use PHPExcel_Worksheet; // 测试数据 $list_data = [ [["title1"] => "t1", ["title2"] => "t2", ["title3"] => "t3"], [["title1"] => "t4", ["title2"] => "t5", ["title3"] => "t6"] ]; // 创建PHPExcel对象 $objPHPExcel = new PHPExcel(); // 设置属性 $objPHPExcel->getProperties()->setCreator('作者'); // 设置第一个工作簿 $objPHPExcel->setActiveSheetIndex(0); $objPHPExcel->getActiveSheet()->SetCellValue('A1', '列标题1'); $objPHPExcel->getActiveSheet()->SetCellValue('B1', '列标题2'); $objPHPExcel->getActiveSheet()->SetCellValue('C1', '列标题3'); $objPHPExcel->getActiveSheet()->setTitle('工作簿标题'); $length = count($list_data1); // 填入数据,用循环结构方法,下面还有更简洁的方法 for($i = 0; $i<$length; $i++) { $p = $i+2; $objPHPExcel->getActiveSheet()->SetCellValue('A'.$p, $list_data[$i]["title1"]); $objPHPExcel->getActiveSheet()->SetCellValue('B'.$p, $list_data[$i]["title2"]); $objPHPExcel->getActiveSheet()->SetCellValue('C'.$p, $list_data[$i]["title3"]); } // 再新加一个工作簿 $sheet = new PHPExcel_Worksheet($objPHPExcel, '工作簿2标题'); $sheet->SetCellValue('A1', '列标题1'); $sheet->SetCellValue('B1', '列标题2'); $sheet->SetCellValue('C1', '列标题3'); // 填入数据,用fromArray批量设置方法 $sheet->fromArray( $list_data, // 赋值的数组 NULL, // 忽略的值,不会在excel中显示 'A2' // 赋值的起始位置 ); $objPHPExcel->addSheet($sheet); // 另外一种增加工作簿的方法 //创建一个新的工作簿(sheet) $objPHPExcel->createSheet(); $objPHPExcel->setactivesheetindex(1); //写入多行数据 foreach($mulit_arr as $k=>$v){ $k = $k+1; $objPHPExcel->getactivesheet()->setcellvalue('A'.$k, $v["title1"]); $objPHPExcel->getactivesheet()->setcellvalue('B'.$k, $v["title2"]); $objPHPExcel->getactivesheet()->setcellvalue('C'.$k, $v["title3"]); } // excel写入对象 $excelWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5'); $filename = date("Y-m-d",strtotime("-1 day")); // 可以直接下载,也可以保存到文件 // $excelWriter->save('php://output'); $excelWriter->save(__DIR__.$filename.'.xls'); // 关闭 $objPHPExcel->disconnectWorksheets(); unset($objPHPExcel);