2012-10-01 79 views
1

我使用PHPExcel在最終用戶單擊「生成excel文件」按鈕後生成excel文件。這個按鈕應該爲客戶打開一個excel文件,並顯示數據。到目前爲止,我有這個代碼,但目前它只打開一個沒有excel文件的空白頁面。誰能告訴我我做錯了什麼?我猜,我不是連接到數據庫中正確..使用PHPExcel從MYSQL生成Excel文件

<?php 
$dbhost= "mysql"; //your MySQL Server 
$dbuser = "survey"; //your MySQL User Name 
$dbpass = "password"; //your MySQL Password 
$dbname = "database"; 
//your MySQL Database Name of which database to use this 
$tablename = "questions"; //your MySQL Table Name which one you have to create excel file 
// your mysql query here , we can edit this for your requirement 
$sql = "Select * from $table "; 
//create code for connecting to mysql 
$Connect = @mysql_connect($dbhost, $dbuser, $dbpass) 
or die("Couldn't connect to MySQL:<br>" . mysql_error() . "<br>" . mysql_errno()); 
//select database 
$Db = @mysql_select_db($dbname, $Connect) 
or die("Couldn't select database:<br>" . mysql_error(). "<br>" . mysql_errno()); 
//execute query 
$result = @mysql_query($sql,$Connect) 
or die("Couldn't execute query:<br>" . mysql_error(). "<br>" . mysql_errno()); 

error_reporting(E_ALL); 

require_once '../Classes/PHPExcel.php'; 
$objPHPExcel = new PHPExcel(); 

// Set the active Excel worksheet to sheet 0 

$objPHPExcel->setActiveSheetIndex(0); 

// Initialise the Excel row number 

$rowCount = 1; 

// Redirect output to a client’s web browser (Excel5) 
header('Content-Type: application/vnd.ms-excel'); 
header('Content-Disposition: attachment;filename="results.xls"'); 
header('Cache-Control: max-age=0'); 
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); 
$objWriter->save('php://output'); 

exit; 
+3

*我猜,我不是連接到數據庫中正確*:所以選擇查詢

while($row=mysqli_fetch_array($result)) { $objWorksheet->fromArray($data, ' ', $ii); } 

這是整個代碼怎麼會後給下面的代碼。不要猜測,調試。首先刪除那些醜陋的'@'並將'error_reporting(E_ALL);'移到腳本的頂部。在第一個'header()'之前添加'ini_set('display_errors',1);'和'exit;'。看看你是否有任何錯誤消息。 – Tchoupi

+0

另外...'$ table'是未定義的,所以你的問題顯然是失敗的。 – Tchoupi

+2

您顯示的代碼將創建一個空的Excel工作簿,因爲您沒有寫任何任何工作表 –

回答

0

我知道這已經發布很長ago..But這可能是幫助別人。

您沒有將任何值分配給工作表。

<?php 
$dbhost= "mysql"; //your MySQL Server 
$dbuser = "survey"; //your MySQL User Name 
$dbpass = "password"; //your MySQL Password 
$dbname = "database"; 
//your MySQL Database Name of which database to use this 
$tablename = "questions"; //your MySQL Table Name which one you have to create excel file 
// your mysql query here , we can edit this for your requirement 
$sql = "Select * from $table "; 
//create code for connecting to mysql 
$Connect = @mysql_connect($dbhost, $dbuser, $dbpass) 
or die("Couldn't connect to MySQL:<br>" . mysql_error() . "<br>" . mysql_errno()); 
//select database 
$Db = @mysql_select_db($dbname, $Connect) 
or die("Couldn't select database:<br>" . mysql_error(). "<br>" . mysql_errno()); 
//execute query 


error_reporting(E_ALL); 

require_once '../Classes/PHPExcel.php'; 
$objPHPExcel = new PHPExcel(); 



    // Set the active Excel worksheet to sheet 0 

    $objWorksheet =$objPHPExcel->getActiveSheet(); 
//title for worksheet 
$objWorksheet->setTitle('Data'); 
//header values 
$objWorksheet->setCellValue('A1', 'Sl.'); 
$objWorksheet->setCellValue('B1', 'Username'); 
$i=2; 


$result = @mysql_query($sql,$Connect); 


    while($row=mysqli_fetch_array($result)) 
       { 
       $data= array($row[0],$row[1],$row[2],$row[3]); 
       $ii="A".$i; 
//fill data 
       $objWorksheet->fromArray($data, ' ', $ii); 
       $i++; 


       } 

// Redirect output to a client’s web browser (Excel5) 
header('Content-Type: application/vnd.ms-excel'); 
header('Content-Disposition: attachment;filename="results.xls"'); 
header('Cache-Control: max-age=0'); 
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); 
$objWriter->save('php://output'); 

exit; 
?>