繁体   English   中英

PHPExcel下载为zip文件

[英]PHPExcel download as zip file

我有此代码,可以通过PHPExcel和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;

尝试这个:

$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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM