其實那不是你csv的問題,而是excel的問題。
畢竟csv只是單純的儲存值,並沒有所謂的欄位屬性的特性。
所以一但你將csv讀入excel,其excel就會依照其預設的特性給於相關屬性。
一般會直接給「通用」
通用的特性就是會將數值文字,統一視為數值。其餘的才會是文字。
依你的情況,當用excel讀入時。使用="00123"的情況下,會先跑函數運算。自動視為文字模式。
所以在一開始的話還是可以正常顯示沒錯。
可是該欄位其實並沒強制為「文字模式」,而還在「通用模式」下只是用文字方式顯示。
一但做了修改儲存後,就會改採用「通用模式」去記錄。這時候,其="00123"早就已經不存在。
會變成 00123 這樣子。一但轉回通用模式後,自然就會視為數值了。
請記得excel其實是為了計算及運算為主的一個軟體。所以數值字串變成數值模式是一定必要的。
這是excel特性,你無從修改。除非你轉存xls。並將其宣告為文字欄位後再儲值就行了。
畢竟csv並無法去記錄欄位格式。
但也不是沒有解決的方式。認真來說。office2007後的系統的檔案。其實都是xml的組合檔。
你們可以試試將某個doc檔或是xls檔,先改成zip或rar等壓縮檔的副檔名後解壓。
你會看到一些目錄跟一個xml檔。其xml檔就是你的內容。目錄內大多數是空的,少部份檔案可能會有圖片或是特規的內容。就會放在這裏。
一般目前後端程式如php語言,有一些excel的外掛或套件的,其實就是運用其xml檔的原理其建立成xls格式的檔案後做壓縮。就可以給excel讀檔且也可自定義格式了。
你往這方面去想去做吧。想直接用csv的方式是不太可能做的到,畢竟那也只是儲存值。
Excel有欄位格式,
CSV是不是也有呢?
感覺你的欄位格式是數字,
怎麼跑都會是數字...
A.
1.設定儲存格格式為文字 , 輸入 01234
2.存為 a.csv
3.對話框...可能會遺失 , 選"是"
B.
1.打開 Excel
2.選"資料"頁籤
3.選"從文字檔",開啟 a.csv 檔 ,匯入
4.選"分格符號",下一步
5.選"逗點",下一步
6.選"文字"(預設值:一般),完成
7.選"新工作表",確定
CSV檔 用 notepad++ 編輯看看,
簡單一句話 CSV檔 不會讓資料消失,
只有excel的格式處理會~
把excel文件儲存為CSV檔的時候,如果要保留數字的0開頭,就要在[儲存格格式]的[數值格式]裏設定。
(例如,若輸入數字 2079,儲存格的數值格式設定為的[00000000],則會顯示為[00002079],而在儲存為CSV檔的時候,亦會保留數字的0開頭。)
[參考]
Excel-在儲存格中輸入0開頭的數字