使用PHPExcel下载Excel文件

时间:2014-11-04 15:32:57

标签: php phpexcel

我正在尝试使用PHPExcel下载excel文件,就像它很好地下载excel文件但excel文件中的数据都是废话......这不是我所期望的。我通过非常基本的方法来测试我的Excel工作表数据输出。

这是我尝试的代码

else if($request->p['type'] == 'excel')
    {

        $report_type_name = "Graph Survey Report";
        $ExcelReport = new ExcelApExport($sections, $group_definition, $questions,    $sample_corrections);
        $objPHPExcel = $ExcelReport->export($sets, $disp_filter);
        header('Content-Type: application/vnd.ms-excel');

        header("Content-Disposition: attachment; "
            . escape_for_content_disposition("{$report_name} - {$report_type_name} - " . date("Y-m-d.H.i") . ".xls"));
        header('Cache-Control: max-age=0');

        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');

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

        exit;
    }

我也在这里制作对象并在这里调用phpexcel方法

public function export($Sets, $disp_filter)
 {

    $objPHPExcel = new PHPExcel();
    $objPHPExcel->getProperties()->setTitle("Offic excel Test Document");
    $objPHPExcel->getProperties()->setSubject(" Test Document");
    $objPHPExcel->getProperties()->setDescription("Test document for  XLS, generated using PHP     classes.");
    //echo date('H:i:s') . " Add some data\n";
    $objPHPExcel->setActiveSheetIndex(0);
    $objPHPExcel->getActiveSheet()->SetCellValue('A1', 'Hello');
     $objPHPExcel->getActiveSheet()->SetCellValue('B2', 'world!');
    $objPHPExcel->getActiveSheet()->SetCellValue('C1', 'Hello');
   $objPHPExcel->getActiveSheet()->SetCellValue('D2', 'world!');

    return $objPHPExcel;

}

here is what i get in my downloaded excel file

请你能告诉我为什么这个垃圾数据出现在我的文件而不是预期的数据中。 提前谢谢

3 个答案:

答案 0 :(得分:2)

基本上需要

  

ob_clean();

保存对象之前。

答案 1 :(得分:1)

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');

这是.xls x 文件的作者。 (见:https://github.com/PHPOffice/PHPExcel/blob/develop/Examples/01simple-download-xlsx.php

所以正确的标题是:

// Redirect output to a client’s web browser (Excel2007)
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header("Content-Disposition: attachment; "
        . escape_for_content_disposition("{$report_name} - {$report_type_name} - " . date("Y-m-d.H.i") . ".xlsx")); //.xlsX!

旧.xls文件的编写者是:

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

请参阅:https://github.com/PHPOffice/PHPExcel/blob/develop/Examples/01simple-download-xls.php

答案 2 :(得分:0)

我最近遇到了这个问题,发现这里的另一篇文章非常有用,如果你在使用ob_clean()之后仍然有问题

check this post