2017-02-06 7 views
0

У меня есть этот код и отлично работает с файлом excel с PHPExcel и CI, но я хочу загрузить его как zip-файл, а внутри него файл excel.PHPExcel скачать как zip-файл

$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; 
+0

записать его в файл на сервере, а затем добавить, что тоже почтовый файл и отправить почтовый файл в PHP: // вывод с соответствующими заголовками –

+0

Спасибо Mark Baker –

ответ

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); 
+0

Спасибо Arkadiusz G., я сделал это, используя zip-библиотеку CI –

 Смежные вопросы

  • Нет связанных вопросов^_^