PHP 以 PDO 方式直接將 MySQL 資料匯出成 EXCEL 或 CSV 檔
此方式會將 MySQL 資料庫的某資料表資料,全部匯出成 Excel 或 CSV 檔。(此為笨兔自己記錄參考用,若有需者就參考!若有錯誤或其它方法,請自行更正唄!)
※ 假設 MySQL 資料庫相關資訊如下 ※
<?php
//pdo連接資料庫
$dbhost = "伺服器名稱";
$dbuser = "使用者名稱";
$dbpass = "使用者密碼";
$dbname = "資料庫名稱";
try{
$dsn = "mysql:host=".$dbhost.";dbname=".$dbname.";charset=utf8";
$conn= new PDO($dsn, $dbuser, $dbpass);
//發生錯誤出現錯誤提醒
$conn ->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e){
//發生錯誤結束資料庫連線並顯示錯誤訊息
die($e -> getMessage());
}
$sql = "select * from TEST";
$rs = $conn ->prepare($sql);
$rs -> execute();
//SQL匯出EXCEL,執行此網頁就會直接跳出另存EXCEL新檔的視窗了...
//要匯出EXCEL/CSV第二行必設application/vnd.ms-excel
header('Content-type: text/html; charset=utf-8');
header("Content-type:application/vnd.ms-excel;charset=UTF-8");
//filename=您要儲存的檔案名,如 123.xls 或 123.csv,新xlsx檔似乎有問題
header("Content-Disposition:filename=123.xls");
// \n=跳行 ,或\t=跳格 pdo好像不能用\t echo "編號,姓名,電話\n"; //此為EXCEL第一行欄位名稱,要啥名稱自設來對應匯出的欄位唄!若不要欄位名,此行可省略
while($row = $rs -> fetch(PDO::FETCH_ASSOC)){
echo $row['T_id'].",".$row['T_name'].",".$row['T_tel']."\n";
};
?>