生成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 即可查看完美效果