從 Excel 匯出單一工作表為 CSV,意思就是把一個 .xlsx 活頁簿中的一個分頁,轉換成純文字檔:每一列成為一筆記錄,逗號與引號依 RFC 慣例進行跳脫,記錄之間以 CRLF 換行符號分隔。典型的匯出流程會挑選一個不超過 20 MB 的本機 .xlsx 活頁簿,讓你選擇要轉換的工作表,在瀏覽器中產生 CSV 文字,並提供一個可下載的檔案,讓你能在文字編輯器中開啟,或匯入到另一個應用程式。這次匯出會擷取工作表的儲存值 — 文字、數字和布林值 — 並以純文字呈現,但不會保留活頁簿的格式特性,例如公式、格式設定、圖表、註解、合併儲存格的語意或驗證規則。由於 CSV 本身沒有內建的型別系統,每個值都只是文字,接收端的試算表或資料庫會依各自的規則解讀每個欄位。清楚知道哪些內容會離開活頁簿、哪些會留在原處,正是乾淨交接與毀損匯入之間的差別。

how to export a sheet in excel to csv
如何安全地從 Excel 匯出單一工作表為 CSV

「匯出工作表」在 CSV 語境中的意涵

當有人說「把 Excel 的一張工作表匯出為 CSV」時,他們通常指的是一項範圍明確的操作:把 .xlsx 檔案中一個具名工作表的儲存格,寫入其他程式可以解析的扁平文字檔。結果並不是活頁簿的複本,而是某一張工作表的儲存值投影到一個更簡單的格式。被選取工作表中的每一列都會成為 CSV 中的一行,而該列中的儲存格以逗號分隔。內容包含逗號、雙引號或換行的欄位會以雙引號包裹,內嵌的雙引號則會以兩個雙引號表示,作為跳脫。記錄以 CRLF 換行符號結尾,這是多數試算表與資料庫匯入工具所預期的格式。

這與直接從 Excel 將活頁簿另存為 CSV 不同 — 後者通常需要手動清理、僅匯出作用中的工作表,並透過你安裝的 Excel 經由作業系統寫入檔案。這也和仍然涉及 Excel 的「另存新檔 → CSV UTF-8」路徑不同。完全在瀏覽器中處理的匯出作業(例如使用 Excel 轉 CSV 這類工具)會在本機開啟 .xlsx 封裝,絕不上傳,並產生一個 CSV blob 供下載。

匯出之前:先檢查工作表

匯出過程中最小的錯誤,就是把錯誤的工作表送出去。在按下轉換之前,請先開啟活頁簿並確認三件事:你實際需要的是哪一張工作表、該工作表中是否有不想出現在 CSV 的列或欄、以及第一列的標題是否與下游系統所預期的欄位名稱一致。CSV 並不會夾帶隱藏列的旗標,因此你在 Excel 中篩選掉的列,除非先刪除,否則會以一般記錄的形式出現在檔案中。

同時確認活頁簿本身符合你將使用工具的限制。Excel 轉 CSV 瀏覽器工具接受單一不超過 20 MB 的傳統 .xlsx OOXML 封裝,限制所選工作表的儲存格數量上限為 100,000 個,並將產生的 CSV 上限設為 10 MB。若你的活頁簿更大,則必須先進行精簡。若要快速估算上限,可以把已填入資料的列數乘以已填入資料的欄數。一張有 5,000 列、20 個已填入資料欄位的工作表,會達到 5,000 × 20 = 100,000 個儲存格,正好是工具在停止讀取前所強制執行的上限。

請注意,舊版的 .xls 檔、啟用巨集的格式、加密的活頁簿以及遠端 URL 都不被接受。受損、超過大小限制或不支援的封裝會回傳錯誤,並且不會產生部分檔案 — 這些限制是明確的,而不是靜默地截斷,這對你打算依賴的傳輸來說是比較安全的失敗模式。

如何在瀏覽器中將 Excel 工作表匯出為 CSV

  1. 在瀏覽器中開啟 Excel 轉 CSV 工具,選擇一個不超過 20 MB 的本機 .xlsx 活頁簿。該檔案由瀏覽器分頁本身讀取 — 並不會上傳到轉換伺服器。
  2. 活頁簿載入完成後,從可用清單中選擇你要匯出的工作表。每次執行僅匯出一張工作表,因此請挑選下游系統所需要的正確分頁。
  3. 點選「Convert to CSV」(轉換為 CSV)。工具會讀取所選工作表的儲存值,依 RFC 規則跳脫逗號、引號與內嵌換行,並以空欄位表示空白儲存格。
  4. 將產生的 CSV blob 下載到你的電腦,然後在文字編輯器中開啟一次,或直接於目的應用程式中開啟,再分享給其他人。
  5. 保留原始的 .xlsx 活頁簿作為資料來源。工具絕不會覆寫它,而 CSV 是一種有損的投影,因此該活頁簿仍是唯一仍保有格式、公式與中繼資料的檔案。

CSV 輸出的內容 — 以及被捨棄的部分

CSV 刻意保持精簡。匯出作業會以純文字擷取儲存的文字、數字和布林值。任何需要試算表引擎解讀的內容都不會包含在檔案中。下表摘要說明哪些內容會保留下來、哪些會被捨棄。

活頁簿特性匯出後 CSV 中的結果
儲存的字串值以跳脫後的 CSV 文字寫入
儲存的數值以純數字文字寫入,包含負數
布林值 TRUE / FALSE以布林文字寫入
空白儲存格以空白的 CSV 欄位寫入
公式來源(例如 =A1+B1)不保留 — 僅寫入儲存結果
儲存格格式、字型、色彩不保留
合併儲存格的語意不會以合併狀態保留
圖表、影像、註解不保留
日期值僅儲存數值 — 不套用任何地區設定或日期格式
工作表名稱不包含於 CSV 檔案中
驗證規則、篩選、列印設定不保留

由於公式不會被執行或複製,一個儲存值為 =SUM(A1:A10) 結果的公式儲存格表現如常 — 僅寫入結果,公式來源則會被捨棄。工具也不會計算公式、執行巨集、追蹤外部連結,或執行試算表內容,因此開啟含有內嵌巨集的活頁簿是安全的;那些巨集在匯出過程中並不會執行。

下載後需要注意的 CSV 陷阱

在文字編輯器中開啟時一切正常的 CSV,在接收端的應用程式中仍可能失敗。以下三個問題反覆出現。第一,編碼。如果你的文字編輯器在檔案開頭顯示奇怪的字元,可能是其他程式加入了 UTF-8 BOM;請使用專門的工具將其移除 — 在不遺失資料的情況下移除 CSV 檔案的 BOM 指南詳細說明了清理步驟。

第二,前導零。以 0 開頭的郵遞區號或產品代碼,在 CSV 內部仍以純文字形式保留前導零 — 但當試算表應用程式開啟檔案並猜測該欄位為數值時,顯示時常常會去除前導零。若前導零具有商業意義,接收端系統必須將該欄位以文字方式匯入。

第三,公式注入。試算表應用程式通常會將第一個有效字元為 =、+、- 或 @ 的儲存格解讀為公式。為了降低此風險,匯出工具會在第一個有效字元屬於上述觸發字元之一的文字儲存格前加上單引號。數字則維持為純數字文字。這是一項刻意的安全轉換 — 接收端的試算表可能會顯示該單引號,或將其保留為文字。在把檔案視為最終版本之前,請檢視任何開頭字元具有商業意義的欄位。

在交接之前驗證結果

最可靠的單一檢查方式,是在將會使用該 CSV 的應用程式中(而不僅是在文字編輯器中)開啟下載的檔案。在 Notepad 中看起來完美的 CSV,仍可能因為匯入端遇到未跳脫的逗號、非預期的 CRLF,或分隔符號不一致,而產生欄位錯位的錯誤。請確認列數與來源工作表一致、確認標題列符合匯入端所預期的內容,並確認任何代碼、識別碼或日期欄位以你下游系統所需的形式完整保留。

若以逗號分隔的文字並非目的端的正確交換格式 — 例如你需要用於 API 的 JSON 文件,或用於網頁的 HTML 表格 — 請改用相關的轉換器,而不是強迫 CSV 去執行它從未設計要處理的工作。受損、超過大小限制或不支援的封裝會產生錯誤且不會輸出部分檔案,這本身也是一項有用的資訊:代表限制是被明確套用,而不是檔案被靜默截斷。保留 .xlsx 活頁簿作為資料來源、將 CSV 視為單向投影,如此一來交接就能順利完成。

延伸閱讀:在本機將 Excel 轉換為 JSON 以用於所得稅申報