搜尋此網誌

2026/03/02

解決 Excel 讀取 CSV 時數值字串被自動轉換的問題

在使用 Microsoft Excel 處理資料時,CSV(逗號分隔值, Comma Separated Values)是一種非常常見的檔案格式。CSV 因為簡單、通用,被廣泛用於資料交換與匯出報表。然而,當我們把 CSV 檔案直接用 Excel 開啟時,常常會遇到一個令人困擾的問題:

原本在 CSV 中作為文字(字串)的欄位,卻被 Excel 自動轉換為數字,導致格式錯誤。

例如:

"00123"

這種前置零的重要識別碼,本來被視為字串,但 Excel 打開後會自動把它變成:

123

這會造成資料錯誤、識別碼失敗或下游系統判讀錯誤,尤其在金融、條碼、ID 與產品編碼等情況下非常棘手。


為什麼會發生自動轉換?

Excel 的開發設計初衷是讓使用者方便地操作數據,因此它會嘗試「智能判斷」資料格式。如果某個欄位看起來像是數值(例如全部都是數字),Excel 就會自動把它當成數字處理,包括:

  • 去除前置零

  • 將長數字識別為科學記號

  • 調整日期格式

這種行為對大部分數據很方便,但在一些需要精確控制格式的 CSV 內容中卻會導致錯誤。


解決方法:在 CSV 欄位中顯式標示字串

為了讓 Excel 不自動轉換欄位格式,我們可以在 CSV 裡面的字串前後加上 等號與引號,例如:

="00123"

這樣處理後:

  • Excel 會把這整個欄位視為公式字串

  • 顯示為完整的 "00123"

  • 前置零 不會被去掉

這是目前最簡單、直接可行的方法,不需額外工具或手動格式設定。


實際示例

原始的 CSV 內容:

Product Code,Name
00123,Widget A
00045,Gadget B

Excel 直接開啟後可能變成:

Product CodeName
123Widget A
45Gadget B

加上公式字串後 CSV 內容:

Product Code,Name
="00123",Widget A
="00045",Gadget B

此時 Excel 會正確顯示:

Product CodeName
00123Widget A
00045Gadget B


更安全的匯入方式(避免格式自動轉換)

如果你不想修改 CSV 本身,也可以透過 Excel 的匯入精靈來手動指定格式:

  1. 開啟 Excel

  2. 選擇 資料 > 從文字/CSV 匯入

  3. 選擇你的 CSV 檔案

  4. 在匯入選項中指定「欄位格式」為 文字(Text)

  5. 完成匯入

這樣 Excel 就不會自動把字串轉成數字,也能保留前置零及其它格式完整性。


CSV 與編碼注意事項(進階)

除了欄位格式外,在匯出或匯入 CSV 時,編碼格式(如 UTF-8 vs ANSI)也會影響資料正確性,尤其是含有中文或特殊字元時。為避免亂碼問題,建議:

  • CSV 使用 UTF-8 編碼

  • 匯入時在精靈中指定 UTF-8 字元集

這樣才能確保所有語言與符號都能正確顯示與處理。


參考資料

沒有留言:

張貼留言