數據和電子表格 · CSV Cleaner
為什麼 Excel 會默默地損壞 CSV 欄位:前導零、日期和長 ID
· 為什麼它很重要
數據集 資料清理 試算表
在電子表格中開啟 CSV 並不是中立的:郵遞區號會遺失零,代碼會變成日期,長標識符會變成科學記數法。這篇文章解釋了為什麼會發生這種情況、什麼是不可恢復的以及如何保持原始文件完整。
一個檔案在有人打開之前一直正常 - 郵遞區號 01234 變成 1234,並且損壞被保存回來
檔案以郵遞區號 01234 離開來源系統,在電子表格中打開,並以 1234 回傳給分析人員。原始 CSV 的格式沒有錯誤:它包含帶有前導零的文字。當程式猜測該列是數字然後保存其解釋值時,就會出現差異。一旦有人覆蓋來源檔案,以後的清理工具就無法知道 1234 過去是否表示 01234 還是 001234。在任何電子表格中檢查之前,請保留未更改的匯出。
開啟時的類型猜測——試算表如何從文字推斷數字、日期與公式,以及 CSV 為何無法另行聲明欄位類型
CSV 只表示資料列、分隔符號與以引號括住的文字,不會聲明每一欄是數字、日期或郵遞區號。試算表直接開啟檔案時只能自行猜測:以數字開頭的值可能變成數字,03-04 可能依地區設定被解讀為日期,而以 = 開頭的值在某些應用程式中可能被當成公式。替「01234」加上引號只會保護 CSV 的分隔結構,並不能保證自動匯入精靈日後把它分類為文字。
經典的傷亡——前導零、長數字標識符、任何類似日期的內容以及以等號開頭的值
郵遞區號與 SKU 的前導零、超過試算表數值格式可精確保存位數的長識別碼,以及外觀含糊的日期字串,都是常見受害者。科學記號本身不是損壞,而是顯示方式;但長 ID 一旦被轉成數值再儲存,就可能失去精確數字。來自不受信任資料、外觀像公式的值則是另一項資安風險。ToolAcre 的 CSV 匯出提供「防公式注入」選項,會在危險的起始字元前加上前綴;代價是原本刻意要計算的儲存格也不再運算。
為什麼損壞通常是永久性的 - 保存時的精度丟失以及以不同格式重新序列化的日期無法從輸出中逆轉
假設 20 位客戶參考號碼在數字解釋後四捨五入並保存。無法從新的 CSV 猜出遺失的原始數字。轉換為內部日期並匯出到另一個區域設定的日期可能會遺失,無論來源是指 4 月 3 日還是 3 月 4 日。這就是為什麼「我稍後會清理它」不是安全的第一步。在任何具有自動輸入功能的軟體有機會替換原始位元組之前,請保留原始位元組。
相反,處理原始文字 - 保留電子表格未觸及的副本,並在導入之前將其清理為文字
使用將單元格視為字串的解析器處理文字匯出的副本。 ToolAcre 的 CSV Cleaner 會解析瀏覽器中的分隔符號和帶有引號的欄位,並顯示行警告,而不會默默刪除多餘的單元格。檢查標頭是否仍包含其原始前導位元組以及識別碼是否包含確切的來源字元。清理空格或重複項與解釋欄位的含義是分開的;即使每個字元碰巧都是數字,郵遞區號也應該保留為字串。
工作範例 - 包含 SKU 和郵遞區號的產品匯出,顯示電子表格往返變更的內容以及文字層級清理保留的內容
使用帶有標題 sku;郵遞區號;說明和行 00042;01234;“紅色,小”和 00043;00105;“藍色,大”的說明性導出。簡單的逗號導入會折疊分號欄位,而自動數字輸入可以將 00042 和 01234 轉換為 42 和 1234。 CSV Cleaner 的分號解析會產生三個文字列,包括每個描述中帶引號的逗號;匯出清理後的副本仍需要您將列作為文字匯入目標電子表格中。在將原始檔案和往返檔案發送給採購之前進行比較。
這不包括恢復先前儲存已破壞的值,或設定電子表格的匯入精靈
這篇文章無法恢復已儲存的電子表格檔案中已損壞的識別碼數字或前導零。文字層級清理器也不會設定 Excel 的匯入精靈、同事的區域設定或資料庫架構。一旦原始檔案安全,請按照電子表格供應商的代碼和 ID 列文字匯入說明進行操作。透過精確的接收者工作流程測試小樣本; 「打開成列」並不能證明「保留了每個字串」。
在電子表格看到檔案之前修復檔案 - ToolAcre CSV Cleaner 如何讓您在電子表格中開啟匯出之前修復分隔符號、編碼和引用
在電子表格看到檔案之前修復該檔案,然後選擇保持標識符文字的匯入模式。 CSV Cleaner 可以在本地修復未修改導出的分隔符號、編碼和引用。它不會使電子表格停止代表您猜測欄位類型,因此未變更的原始資料和匯入後的比較仍然是最重要的保障措施。