Gaurav Gadge Ответов: 1

Я хочу Скачать отчет в excel у меня есть следующий код


$filename='Rake Report '.$rail_head.'.xls'; //save our workbook as this file name
                        header('Content-Type: application/vnd.ms-excel'); //mime type
                        header('Content-Disposition: attachment;filename="'.$filename.'"'); //tell browser what's the file name
                        header('Cache-Control: max-age=0'); //no cache
                                    
                        //save it to Excel5 format (excel 2003 .XLS file), change this to 'Excel2007' (and adjust the filename extension, also the header mime type)
                        //if you want to save it as .XLSX Excel 2007 format
                        $objWriter = PHPExcel_IOFactory::createWriter($this->excel, 'Excel5');  
                        //force user to download the Excel file without writing it to server's HD
                        $objWriter->save('php://output');

Но это дает ошибку As: Excel не может открыть файл, потому что формат файла и расширение недопустимы.

Что я уже пробовал:

я пытался открыть файл в Apache OpenOffice и в LibreOffice также, но там остается та же проблема.Любая помощь будет оценена заранее.

1 Ответов

Рейтинг:
2

Sheila Pontes

Привет,

Введите имя файла в функцию сохранения, например::

$objWriter->save('php://output//'. $filename);


Я протестировал ваш код на своем компьютере, и он сгенерировал исключение, потому что я не ввел имя файла excel.

Я оставлю 2 примера, чтобы помочь вам.

<?php
    include_once "Classes/PHPExcel.php";
    
    //Example 1 - 
    //This code create an excel file with the html below.
    $filename='Rake Report '.'myExcelFile'.'.xls'; //save our workbook as this file name
                        header('Content-Type: application/vnd.ms-excel'); //mime type
                        header('Content-Disposition: attachment;filename="'.$filename.'"'); //tell browser what's the file name
                        header('Cache-Control: max-age=0'); 
    
    $objPHPExcel = new PHPExcel();
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    $objWriter->save('c://output//'. $filename);
    
    
    //Example 2
    //This code create an excel file with the data below.
    $objPHPExcel = new PHPExcel();
    $objPHPExcel->getActiveSheet()->setCellValue('A1', '10/07/2017');
    $objPHPExcel->getActiveSheet()->setCellValue('B1', 'A');
    
    $objPHPExcel->getActiveSheet()->setCellValue('A2', '11/07/2017');
    $objPHPExcel->getActiveSheet()->setCellValue('B2', 'B');
    
    $objPHPExcel->getActiveSheet()->setCellValue('A3', '12/07/2017');
    $objPHPExcel->getActiveSheet()->setCellValue('B3', 'C');
     $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
    $objWriter->save('c://output//myExcelFile2.xlsx');
?>

<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <h1>Gerar Excel</h1>
        <table>
            <tr>
                <td>10/07/2017</td>
                <td>A</td>
            </tr>
            <tr>
                <td>11/07/2017</td>
                <td>B</td>
            </tr>
            <tr>
                <td>12/07/2017</td>
                <td>C</td>
            </tr>
        </table>
    </body>
</html>