2015-12-14 53 views
0

/*它可以工作,但是當我打開Excel工作表時,它不工作,所以我刪除了else語句中的echo以及其他所有工作,所以它工作但沒有將數據打印到工作表*/PHP MySQL到PHPExcel沒有顯示數據

include_once 'PHPExcel.php'; 
$sheet = new PHPExcel(); 


$servername = 
$username = 
$password = 
$dbname = 
$conn = new mysqli($servername, $username, $password, $dbname); 
if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT firstname, lastname, phonenumber FROM people where answer='true' LIMIT ".$start.",10 "; 

$result = $conn->query($sql); 


if ($result->num_rows > 0) { 
     // output data of each row 
     $activeSheet=$sheet->getActiveSheet(); 
     while($row = $result->fetch_assoc()) { 

     $activeSheet->setCellValue('A1',' $row["firstname"]'); 
     $activeSheet->setCellValue('B1','$row["lastname"]'); 
     $activeSheet->setCellValue('C1','$row["phonenumber"]'); 
     } 
    } else { 
     echo "0 results"; 
} 
$conn->close();   
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 
header('Content-Disposition: attachment; filename="report.xlsx"'); 
header('Cache-Control: max-age=0'); 

$objWriter=PHPExcel_IOFactory::createWriter($sheet,'Excel2007'); 
$objWriter->save('php://output'); 
exit; 
+1

它顯示什麼嗎?你得到的錯誤是什麼,你期望什麼? –

+0

它顯示excel錯誤,當我打開它的類型錯誤...但是當我刪除else語句它的工作原理而不打印數據到工作表 –

+0

不要把你的密碼在公共論壇! –

回答

0

兩件事情:

在這段代碼

$activeSheet->setCellValue('A1',' $row["firstname"]'); 

語句,你不應該使用周圍的$row部分的任何引號,刪除它們:

$activeSheet->setCellValue('A1', $row["firstname"]); 

另外,您的else子句在標頭之前輸出數據,從而導致發送不正確的數據。刪除else。如果沒有數據,則最終只有一個空的Excel文件。

最後,您將所有數據反覆放入同一個單元格中。使用變量增加到rownumber:

$i = 1; 
while ($row = ...) { 
    ... 
    $activeSheet->setCellValue('A'+$i, $row["firstname"]); 
    ... 
    $i++; 
} 
+0

哦,它的工作!但是我怎樣才能打印所有這些值...現在它只顯示數據到excel中的第一行只有第一項! –

+0

您可以一次又一次地寫入這些相同單元格中的所有數據。使用一個變量來增加行。我會更新我的答案。 –

+0

它的工作,但爲什麼當我檢索數字,當它轉換爲Excel複製爲十六進制? –