2014-11-04 2 views
0

Я пытаюсь загрузить файл excel с помощью PHPExcel, он как будто загружает файл excel красиво, но данные в файле excel - это все дерьмо. Это не то, что я ожидал. Я прошел очень простые методы для проверки вывода данных Excel.Загрузите файл Excel с помощью PHPExcel

здесь код i'am пытается

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

пожалуйста, вы можете предложить мне, почему эти данные дерьмо появляется в моем файле вместо ожидаемых данных. заранее спасибо

+0

почти наверняка потому, что что-то в вашем скрипте вывода символ пробела (возможно, новая строка), прежде чем файл будет сохранен в php: // output –

+0

Я не получил часть кода, где я добавляю любое свободное пространство, можете ли вы предложить мне, где я могу пойти в коде, чтобы исправить это – Maggi

+1

Я понятия не имею .... Я не вижу ваш код, кроме двух небольших методов, которые вы разместили ... Если вам абсолютно необходимо, попробуйте сделать ob_clean() перед саблем e() –

ответ

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

Это писатель для .xls х файлов. (См: 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

+0

Я попытался с этими двумя наборами: 1. с расширением xlsx в одном заголовке и Excel2007 в createWriter, который дает мне xlsx, который не открывается в Excel, я открыл его в текстовом редакторе, у него снова есть вся эта дерьмо, написанная в нем, а не на ожидаемый текст. 2. Я также попробовал набор расширений Excel5 и xls, который дает мне результат выше. – Maggi

2

Она нуждается в основном

ob_clean();

перед тем, как сохранить объект.

0

Я столкнулся с этой проблемой в последнее время и нашел еще один пост здесь, что очень полезно, если ур еще есть проблемы после использования ob_clean()

check this post

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