iT邦幫忙

1

[php] 轉出csv檔,前端0會自動消失

php

各位大大好:
想請問 $value1是陣列要怎麼將其中手機欄前為0開頭的資料轉CSV檔的時候不會消失,$value1['phone'] fputcsv($fp,$value1);不知道要怎麼改 謝謝
https://ithelp.ithome.com.tw/upload/images/20190813/20097057GNN8QvrtpT.png

$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);
                      

看更多先前的討論...收起先前的討論...
pcw iT邦研究生 2 級 ‧ 2019-08-13 18:58:29 檢舉
你用記事本開CSV,應該就會有0了。
mayyola iT邦新手 2 級 ‧ 2019-08-13 20:03:10 檢舉
因為是下載給始用者看,所以用excel,不知道程式有無辦法著手更改
dragonH iT邦高手 1 級 ‧ 2019-08-13 22:17:34 檢舉
我更新方法了 看你的情況適不適用
mayyola iT邦新手 2 級 ‧ 2019-08-13 22:41:11 檢舉
謝謝你
5
dragonH
iT邦高手 1 級 ‧ 2019-08-13 19:05:49
最佳解答

如果你的資料都沒問題

那我想這應該是 excel 的鍋

你可以先把你的 csv 用 vscode, notepad 之類的開啟

看資料是否正確

我測試的資料

tel
0912345678
0912345678
0912345678
0912345678

用 excel 直接開

https://ithelp.ithome.com.tw/upload/images/20190813/20117259WIlwlbWdNy.png

想要在 excel 正常顯示

除了可能調一些相關的設定

還有個方法就是用匯入的

資料 -> 從文字檔

最後一個步驟

欄位格式選擇 文字

---------------------------更新--------------------------

如果在不破壞 database 原本格式的前提下

可以考慮在 tel 前 + "\t"

大概寫一下

foreach ($rows as $value1) {
    $value1['tel'] = "\t".$value1['tel'];
    fputcsv($fp,$value1);
}

直接用 excel 開的結果

https://ithelp.ithome.com.tw/upload/images/20190813/20117259tIaOukTDtq.png

參考

mayyola iT邦新手 2 級 ‧ 2019-08-13 22:37:34 檢舉

謝謝 h大..原來可以這樣做

dragonH iT邦高手 1 級 ‧ 2019-08-13 22:40:01 檢舉

/images/emoticon/emoticon82.gif

小魚 iT邦高手 1 級 ‧ 2019-08-13 23:33:03 檢舉

原來還有這招.

0
小魚
iT邦高手 1 級 ‧ 2019-08-13 19:28:09

1.Excel格式改成文字,但Excel有時候會很聰明自動改成數字.
2.0980-123231就不會轉成數字了.

mayyola iT邦新手 2 級 ‧ 2019-08-13 22:37:52 檢舉

謝謝~~

1
浩瀚星空
iT邦大師 1 級 ‧ 2019-08-14 10:50:47

我記得我以前用的招是直接在生成csv時。在文字部份用""雙引號包起來處理就好。
這樣載入時就會依文字判斷了。

0
pcw
iT邦研究生 2 級 ‧ 2019-08-14 15:26:16

我自己是在電話號碼前面加上單引號(')

我要發表回答

立即登入回答