2017-04-10 6 views
0

PHPexcelプラグインを使用して、mysqlデータからダウンロード可能なExcelファイルを生成しようとしています。残念ながら、私はダウンロードしたExcelファイルの値だけでなく、カラムヘッダーのみを取得していますPHPexcelプラグインを使用してダウンロード可能なExcelファイルの値が取得されない

どこが間違っていますか?また、ユニコード文字を正しく表示したい。続き が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'); 
?> 

マーク・ベイカーのコメントに基づいて、コードを編集したが、それでもすべての結果を得ていません。

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

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

" - >" 演算子のオブジェクトで使用されています

<?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 - > $ value){' –

+0

あなたのコードには2つの問題があります。どちらもそれが正しく動作しないようにします –

答えて

0

変更し、このラインは - これは私の編集したコードです。 2つの事業者間の差は、ここで説明されている: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

関連する問題