PHPExcel下载为zip文件

时间:2017-02-06 03:22:47

标签: php codeigniter zip phpexcel

我有这个代码,使用PHP Excel和CI的excel文件可以正常下载,但是我想把它作为zip文件下载,里面是excel文件。

    $header = array(
    'foodgroup','energy','protein','fat','cho','calcium','iron','thiamin','niacin','vitamin_c'
    ,'vitamin_a',
    );
    require_once APPPATH."/third_party/PHPExcel.php";
    $sheet = new PHPExcel();
    $file = $this->dietary_model->getById($subject_id,'dietary_subject');
    $filename = $file->name;
    $this->load->helper('date');
    $date = date('Y-m-d'); 
    //1st Sheet
    $users = $this->dietary_model->getdata($subject_id,'1');
    $sheet->setActiveSheetIndex(0);
    $activeSheet = $sheet->getActiveSheet();
    $activeSheet->setTitle('Day 1');
    $activeSheet->getStyle('A1:T1')->getFont()->setBold(true);
    $activeSheet->fromArray($header, null, 'A1');
    $activeSheet->fromArray($users,null, 'A2');

    //2nd Sheet
    $users2 = $this->dietary_model->getdata($subject_id,'2');
    $sheet->createSheet();
    $sheet->setActiveSheetIndex(1);
    $activeSheet2 = $sheet->getActiveSheet(1);
    $activeSheet2->setTitle('Day 2');
    $activeSheet2->getStyle('A1:T1')->getFont()->setBold(true);
    $activeSheet2->fromArray($header, null, 'A1');
    $activeSheet2->fromArray($users2,null, 'A2');


    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename='.$filename.' '.$date.'.xlsx'); 
    header('Cache-Control: max-age=0');
    $objWriter = PHPExcel_IOFactory::createWriter($sheet, 'Excel2007');  
    echo '<script>console.log('.$objWriter.')</script>';
    exit;

1 个答案:

答案 0 :(得分:0)

试试这个:

$header = array(
    'foodgroup','energy','protein','fat','cho','calcium','iron','thiamin','niacin','vitamin_c'
    ,'vitamin_a',
    );
require_once APPPATH."/third_party/PHPExcel.php";
$sheet = new PHPExcel();
$file = $this->dietary_model->getById($subject_id,'dietary_subject');
$filename = $file->name;
$this->load->helper('date');
$date = date('Y-m-d'); 
//1st Sheet
$users = $this->dietary_model->getdata($subject_id,'1');
$sheet->setActiveSheetIndex(0);
$activeSheet = $sheet->getActiveSheet();
$activeSheet->setTitle('Day 1');
$activeSheet->getStyle('A1:T1')->getFont()->setBold(true);
$activeSheet->fromArray($header, null, 'A1');
$activeSheet->fromArray($users,null, 'A2');
 //2nd Sheet
$users2 = $this->dietary_model->getdata($subject_id,'2');
$sheet->createSheet();
$sheet->setActiveSheetIndex(1);
$activeSheet2 = $sheet->getActiveSheet(1);
$activeSheet2->setTitle('Day 2');
$activeSheet2->getStyle('A1:T1')->getFont()->setBold(true);
$activeSheet2->fromArray($header, null, 'A1');
$activeSheet2->fromArray($users2,null, 'A2');
$objWriter = PHPExcel_IOFactory::createWriter($sheet, 'Excel2007');  

$excel_file_tmp = tempnam("/tmp", 'your_prefix');
$objWriter->save($excel_file_tmp);

//zip
$zip_file_tmp = tempnam("/tmp", 'your_prefix');
$zip        = new ZipArchive();
$zip->open($zip_file_tmp, ZipArchive::OVERWRITE);
$zip->addFile($excel_file_tmp, 'your_name.xlsx');
$zip->close();

//download
$download_filename = 'your_name.zip'; 
header("Content-Type: application/zip");
header("Content-Length: " . filesize($zip_file_tmp));
header("Content-Disposition: attachment; filename=\"" . $download_filename . "\"");
readfile($zip_file_tmp);
unlink($excel_file_tmp);
unlink($zip_file_tmp);
相关问题