生成excel用的composer包 composer require phpoffice/phpword 0.18.0
生成zip用的composer包 composer require gemorroj/archive7z
1, 'name' => '张三'], ['id' => 2, 'name' => '李四'], ['id' => 3, 'name' => '王五']]; $title = array('班级', '姓名'); $spreadsheet = new Spreadsheet(); $worksheet = $spreadsheet->getActiveSheet()->setTitle('sheet1'); // $writer = new Xlsx($spreadsheet); //表头 //设置单元格内容 foreach ($title as $key => $value) { $worksheet->setCellValueByColumnAndRow($key + 1, 1, $value); } $row = 2; //第二行开始 foreach ($data as $item) { $column = 1; foreach ($item as $value) { $worksheet->setCellValueByColumnAndRow($column, $row, $value); $column++; } $row++; } # 保存为xlsx $filename = 'VoteExcel.xls'; $filePath = root_path() . 'public/uploads/' . $filename; $writer = IOFactory::createWriter($spreadsheet, 'Xls'); $writer->save($filePath); # 浏览器下载 header('Content-Type:application/vnd.ms-excel'); header('Content-Disposition:attachment;filename="' . $filename . '"'); header('Cache-Control:max-age=0'); $writer->save('php://output'); return $filePath; } public static function zipFile() { $encipterFile = self::excelFile(); $filename = "test.zip"; $zip = new \ZipArchive(); if ($zip->open($filename, \ZipArchive::CREATE | \ZipArchive::OVERWRITE) === true) { //设置密码 注意此处不是加密,仅仅是设置密码 if (!$zip->setPassword('password')) { throw new RuntimeException('Set password failed'); } $zip->addFile($encipterFile, $encipterFile);// //往压缩包内添加文件 if ($zip->setEncryptionName($encipterFile, \ZipArchive::EM_AES_256)) { //加密文件 此处文件名及路径是压缩包内的 throw new RuntimeException('Set encryption failed'); } } $zip->close(); //关闭压缩包 } }
在框架中全局搜索 test.zip 即可查看完美效果