各位大大好:
想請問 $value1是陣列要怎麼將其中手機欄前為0開頭的資料轉CSV檔的時候不會消失,$value1['phone'] fputcsv($fp,$value1);不知道要怎麼改 謝謝
$sql = "SELECT * FROM checkin LIMIT 20";
$statement = $conn->prepare($sql);
$statement->execute();
$rows = $statement->fetchAll(PDO::FETCH_ASSOC);
$columnNames = array();
if(!empty($rows)){
$firstRow = $rows[0];
foreach($firstRow as $colName => $val){
$columnNames[] =$colName; //取第一行欄位
}
}
$fileName = 'mysql-export.csv';
header('Content-Type: application/vnd.ms-excel;charset=utf-8');
header('Content-Disposition: attachment; filename="' . $fileName . '"');
$fp = fopen('php://output', 'w');
fputcsv($fp, $columnNames);
foreach ($rows as $value1) {
fputcsv($fp,$value1);
}
fclose($fp);
如果你的資料都沒問題
那我想這應該是 excel 的鍋
你可以先把你的 csv 用 vscode, notepad 之類的開啟
看資料是否正確
我測試的資料
tel
0912345678
0912345678
0912345678
0912345678
用 excel 直接開
想要在 excel 正常顯示
除了可能調一些相關的設定
還有個方法就是用匯入的
資料 -> 從文字檔
最後一個步驟
欄位格式選擇 文字
---------------------------更新--------------------------
如果在不破壞 database 原本格式的前提下
可以考慮在 tel 前 + "\t"
大概寫一下
foreach ($rows as $value1) {
$value1['tel'] = "\t".$value1['tel'];
fputcsv($fp,$value1);
}
直接用 excel 開的結果
1.Excel格式改成文字,但Excel有時候會很聰明
自動改成數字.
2.0980-123231就不會轉成數字了.