為什麼要「表格變 JSON」
介面要 JSON,倉庫裡卻是 Excel——這是資料對接裡最常見的錯位。表格是給人看的二維結構:首列表頭,下面一列一筆記錄;JSON 是給程式讀的樹狀結構:一個物件一筆記錄,鍵名對應欄位。
轉換的本質就一條對映規則:表頭變成鍵名,每一列變成一個物件,所有列組成一個陣列。理解了這一點,三種方法只是在「誰來執行這條規則」上不同:瀏覽器裡的線上工具、Excel 自己的公式、或者 Python 指令碼。
方法一:線上工具,適合一次性的轉換
Excel 轉 JSON 工具走這條路:
- 上傳
.xlsx檔案,或直接把從 Excel、WPS 裡複製的表格區域貼進去。 - 首列自動作為鍵名;多工作表的檔案可以切換匯出某一張,或一次匯出為「表名: 資料」的結構。
- 勾選需要的欄,只匯出業務欄位。
- 複製或下載結果。
幾個對結果影響很大的細節,這個工具都做了處理:數字與布林保留原生類型而不是全變字串;日期可以選擇 ISO 8601、Excel 序列號或原始文字;16 位以上的整數保留為字串——訂單號、雪花 ID 不會結尾變 0。整個解析在瀏覽器本地完成,檔案不上傳伺服器,內部資料也能用。
方法二:Excel 公式,適合幾列資料的小片段
給介面寫測試資料、造一筆示例記錄時,不值得動用工具。用 TEXTJOIN 和 & 直接在儲存格裡拼:
="{"&""""&$A$1&""""&":"&""""&A2&""""&","&""""&$B$1&""""&":"&B2&""""&"}"
A1、B1 是表頭,A2、B2 是第一列資料。向下填滿公式,每列得到一個物件字面量,再在外層套上中括號、用逗號連接,就是一個 JSON 陣列。
這個方法的邊界很清楚:十幾列、欄位類型全是文字時最好用;數字精度、跳脫引號、日期格式都要自己兜,超過一屏就該換方法。
方法三:Python,適合要重複跑的轉換
表格每週更新、轉換要進流程時,寫成指令碼:
import pandas as pd
import json
df = pd.read_excel("orders.xlsx", dtype={"order_id": str})
records = df.to_dict(orient="records")
with open("orders.json", "w", encoding="utf-8") as f:
json.dump(records, f, ensure_ascii=False, indent=2)
dtype={"order_id": str} 把訂單號欄按文字讀入,從源頭避開精度問題;to_dict(orient="records") 得到的正是「一列一個物件」的清單;ensure_ascii=False 讓中文保持原樣而不是轉義成 \uXXXX。
日期欄需要單獨處理:pd.read_excel 會把日期讀成 Timestamp,json.dump 之前先 df["created_at"] = df["created_at"].dt.strftime("%Y-%m-%d") 轉成目標格式。
轉換前值得檢查的三件事
表格本身規不規範。 合併儲存格、雙列表頭、小計列、空白間隔列,這些「人看著舒服」的排版都是機器轉換的障礙。轉換前把資料整理成規整的二維表:一個表頭列、每列填滿、無合併。
數字是真的數字還是編號。 金額、數量用數字類型沒問題;訂單號、手機號、身分證號在 JSON 裡應該永遠是字串。判斷標準:這個值你會對它做加減乘除嗎?不會就轉成字串。
多張工作表要不要分開。 一張工作表對應一個陣列是預設行為;多表檔案先想清楚要的是「每張一個陣列」的集合,還是拼成一個帶表名鍵的物件。
常見問題
Excel 轉 JSON 時表頭會變成什麼?
常規約定是首列表頭對映為 JSON 物件的鍵名,之後每一列資料變成一個物件,組成陣列。表頭為空的欄會補 column_N 這樣的預設名,重複表頭自動加後置詞,避免鍵名衝突。
訂單號這類長數字轉 JSON 後結尾變成 0 怎麼辦?
這是數字精度問題,不是轉換丟了資料:超過 15-16 位的整數無法被精確表示成雙精度浮點數。轉換時應把這類欄按文字處理、輸出為 JSON 字串而不是數字;可靠的轉換工具會自動保留為字串。
有合併儲存格的表格能直接轉 JSON 嗎?
不能直接轉。合併儲存格表示部分列的值為空,機械轉換會得到一堆 null 或空字串。先把表格整理成規範的二維表——每列填滿、一個表頭列——再轉換,得到的 JSON 才可用。
Excel 裡的日期轉 JSON 後會變成什麼?
取決於轉換器的處理:常見輸出有 ISO 8601 字串(2026-09-30T00:00:00Z)、Excel 日期序列號(一個數字)和原始顯示文字三種。介面對接前先確認對方要哪種,尤其是帶時區語義的場景。
在瀏覽器裡轉換 Excel 會把檔案傳上去嗎?
看具體工具的實作。本站的轉換工具在瀏覽器本地解析 .xlsx,檔案全程不上傳伺服器;使用其他線上服務前應查看其隱私說明,含敏感資料的表格尤其要確認這一點。
相關閱讀
- 反方向、把 JSON 匯入 Excel 的完整路徑:用 Power Query 把 JSON 匯入 Excel
- JSON 陣列怎麼變成多張工作表:JSON 陣列轉 Excel
- 不需要 Excel 時的另一條路:JSON 轉 CSV 轉換指南