2017-04-10 33 views
0

我想使用PHPexcel插件從MySQL數據生成可下載的Excel文件。不幸的是,我只獲取列標題,而不是他們的值在下載的Excel文件中沒有得到任何值使用PHPexcel插件生成的可下載的Excel文件

我在哪裏出錯了?另外,我希望unicode字符正確顯示。 以下是我的downloadexcel.php文件的代碼 - 基於馬克·貝克的評論

<?php 
require_once 'Classes/PHPExcel.php'; 
require_once 'Classes/PHPExcel/Writer/Excel2007.php'; 

$objPHPExcel = new PHPExcel(); 

$data=array(); 

$sql="SELECT s.t_id,s.t_text,p.user_name,p.description,s.time,p.place from t 
AS s INNER JOIN users AS p ON s.user_name=p.user_name order by s.time desc"; 
$result = mysqli_query($con,$sql); 

while($row = mysqli_fetch_array($result)) { 
    $array=array("T Link" => $row[0],"T"=>$row[1] , "User Name" => $row[2] , 
"User Profile" => $row[3], "Time" => $row[4] , "Place" => $row[5]); 
    array_push($data,$array); 
    } 

$objPHPExcel->getActiveSheet()->setCellValue('A1', 'T Link'); 
$objPHPExcel->getActiveSheet()->setCellValue('B1', 'T'); 
$objPHPExcel->getActiveSheet()->setCellValue('C1', 'User Name'); 
$objPHPExcel->getActiveSheet()->setCellValue('D1', 'User Profile'); 
$objPHPExcel->getActiveSheet()->setCellValue('E1', 'Time'); 
$objPHPExcel->getActiveSheet()->setCellValue('F1', 'Place'); 

$row=2; 
foreach($data as $row->$value) { 
$objPHPExcel->getActiveSheet()->setCellValue('A'.$row,$value->t_id); 
$objPHPExcel->getActiveSheet()->setCellValue('B'.$row,$value->t_text); 
$objPHPExcel->getActiveSheet()->setCellValue('C'.$row,$value->user_name); 
$objPHPExcel->getActiveSheet()->setCellValue('D'.$row,$value->description); 
$objPHPExcel->getActiveSheet()->setCellValue('E'.$row,$value->time); 
$objPHPExcel->getActiveSheet()->setCellValue('F'.$row,$value->place); 
    $row++; 
} 
header('Content-Type: application/vnd.openxmlformats- 
officedocument.spreadsheetml.sheet'); 
header('Content-Disposition: attachment;filename="helloworld.xlsx"'); 
header('Cache-Control: max-age=0'); 
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 
$objWriter->save('php://output'); 
?> 

,編輯的代碼,但仍然沒有得到任何結果。這是我的編輯的代碼 -

<?php 
require_once 'Classes/PHPExcel.php'; 
require_once 'Classes/PHPExcel/Writer/Excel2007.php'; 

$objPHPExcel = new PHPExcel(); 

$data=array(); 

$sql="SELECT s.t_id,s.t_text,p.user_name,p.description,s.time,p.place from t 
AS s INNER JOIN users AS p ON s.user_name=p.user_name order by s.time desc"; 
$result = mysqli_query($con,$sql); 

$objPHPExcel->getActiveSheet()->setCellValue('A1', 'T Link'); 
$objPHPExcel->getActiveSheet()->setCellValue('B1', 'T'); 
$objPHPExcel->getActiveSheet()->setCellValue('C1', 'User Name'); 
$objPHPExcel->getActiveSheet()->setCellValue('D1', 'User Profile'); 
$objPHPExcel->getActiveSheet()->setCellValue('E1', 'Time'); 
$objPHPExcel->getActiveSheet()->setCellValue('F1', 'Place'); 

while ($row = mysqli_fetch_array($result)) 
     { 
$n=2; 
foreach($data as $row) { 
$objPHPExcel->getActiveSheet()->setCellValue('A'.$n,$row['t_id']); 
$objPHPExcel->getActiveSheet()->setCellValue('B'.$n,$row['t_text']); 
$objPHPExcel->getActiveSheet()->setCellValue('C'.$n,$row['user_name']); 
$objPHPExcel->getActiveSheet()->setCellValue('D'.$n,$row['description']); 
$objPHPExcel->getActiveSheet()->setCellValue('E'.$n,$row['time']); 
$objPHPExcel->getActiveSheet()->setCellValue('F'.$n,$row['place']); 
    $n++; 
    } 
} 
header('Content-Type: application/vnd.openxmlformats- 
officedocument.spreadsheetml.sheet'); 
header('Content-Disposition: attachment;filename="helloworld.xlsx"'); 
header('Cache-Control: max-age=0'); 
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 
$objWriter->save('php://output'); 
?> 
+0

是你推到$數據__array__不承擔任何相似之處,你在'的foreach訪問__model__( $ data as $ row - > $ value)' –

+0

$行被用於行號;還可以作爲某種形式的模型持有者:'$ row = 2; foreach($ data爲$ row - > $ value){' –

+0

這是您的代碼的兩個問題;這兩者都會阻止它正常工作 –

回答

0

改變這一行:

foreach($data as $row->$value) { 

foreach($data as $row => $value) { 

「 - >」 運算符使用的對象。兩家運營商之間的差異在這裏解釋:https://stackoverflow.com/a/14037376/577778

更新的代碼

<?php 
require_once 'Classes/PHPExcel.php'; 
require_once 'Classes/PHPExcel/Writer/Excel2007.php'; 

$objPHPExcel = new PHPExcel(); 

$data=array(); 

$sql="SELECT s.t_id,s.t_text,p.user_name,p.description,s.time,p.place from t 
AS s INNER JOIN users AS p ON s.user_name=p.user_name order by s.time desc"; 
$result = mysqli_query($con,$sql); 

$objPHPExcel->getActiveSheet()->setCellValue('A1', 'T Link'); 
$objPHPExcel->getActiveSheet()->setCellValue('B1', 'T'); 
$objPHPExcel->getActiveSheet()->setCellValue('C1', 'User Name'); 
$objPHPExcel->getActiveSheet()->setCellValue('D1', 'User Profile'); 
$objPHPExcel->getActiveSheet()->setCellValue('E1', 'Time'); 
$objPHPExcel->getActiveSheet()->setCellValue('F1', 'Place'); 

$n=2; 

while ($row = mysqli_fetch_array($result)) 
     { 
$objPHPExcel->getActiveSheet()->setCellValue('A'.$n,$row['t_id']); 
$objPHPExcel->getActiveSheet()->setCellValue('B'.$n,$row['t_text']); 
$objPHPExcel->getActiveSheet()->setCellValue('C'.$n,$row['user_name']); 
$objPHPExcel->getActiveSheet()->setCellValue('D'.$n,$row['description']); 
$objPHPExcel->getActiveSheet()->setCellValue('E'.$n,$row['time']); 
$objPHPExcel->getActiveSheet()->setCellValue('F'.$n,$row['place']); 
    $n++; 
} 
header('Content-Type: application/vnd.openxmlformats- 
officedocument.spreadsheetml.sheet'); 
header('Content-Disposition: attachment;filename="helloworld.xlsx"'); 
header('Cache-Control: max-age=0'); 
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 
$objWriter->save('php://output'); 
?> 
+0

Q Hussain請參閱我的編輯代碼。然而,這是行不通的 – user20152015

+0

在修改後的代碼中,我認爲你不再需要「foreach」。在刪除代碼後嘗試運行代碼。此外,在「while」塊內嘗試打印$ row ['t_id']的值。你確定你的查詢返回一些結果嗎? –

+0

如果我刪除foreach,那我如何獲取後續行? – user20152015