2012-03-15 13 views
2

私はmysqlデータベースの内容を以下のスクリプトを使用してExcelにエクスポートしようとしています。私は間違ったことをする必要があります:mysqlデータベースをExcelにエクスポート

$getExcel = "SELECT name, age, course, city FROM person"; 
$res = mysql_query($getExcel); 


/** Error reporting */ 
error_reporting(E_ALL); 

date_default_timezone_set('Europe/London'); 

/** PHPExcel */ 
require_once 'Classes/PHPExcel.php'; 


// Create new PHPExcel object 
echo date('H:i:s') . " Create new PHPExcel object\n"; 
$objPHPExcel = new PHPExcel(); 

if(!$res){ 
    die("Error"); 
} 
$col = 0; 
$row = 0; 
while($row = mysql_fetch_assoc($res)) { 
    foreach($row as $key=>$value) { 
     $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $row, $value); 
     $col++; 
    } 
    $row++; 
} 

// Set active sheet index to the first sheet, so Excel opens this as the first sheet 
$objPHPExcel->setActiveSheetIndex(0); 

// Save Excel 2007 file 
echo date('H:i:s') . " Write to Excel2007 format\n"; 
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 
$objWriter->save('record.xlsx'); 

私は間違っていますか?

+0

を実際の問題?ファイルは生成されていますか?エラーメッセージが表示されますか? –

+0

シンプルにしておけば、 'html'ファイルをコード内に' table'で作成し、 '.xls'として保存してからExcelで開くだけです。それは汚れた汚れたハックですが、あなたがする必要があるすべてがエクセルにいくつかのデータをエクスポートする必要がある場合は動作します。それはシステム全体ではありません... – Yaniro

+1

@Yaniro - それは、世界で最も優れたユーザーエクスペリエンスではなく、MS EXcelのほとんどの新バージョンで警告メッセージを表示する汚いトリックです...私はそれをかなり考慮する私がそのファイルを開くユーザーであればプロとしては役に立たない –

答えて

5

あなたの問題は、この試みる...あなたは二つの異なるコンテキストで変数$rowを使用していることを、おそらく、次のとおりです。別に$行が何、0ではなく1から開始すべきであるという事実から

$row = 1; 
while($mrow = mysql_fetch_assoc($res)) { 
    $col = 0; 
    foreach($mrow as $key=>$value) { 
     $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $row, $value); 
     $col++; 
    } 
    $row++; 
} 
+0

よく目に付きます。 +1 –

+0

これはExcelを生成しますが、列は揃っていません。例えば。最初のレコードがA1で始まり、2番目のレコードがC2で始まり、次にすべてのレコードの代わりにG3がA列から始まるとします。 – echez

+3

$ col = 0; whileループ内、foreach()ループの直前にあるべきである –

関連する問題