DevTool 團隊

把 Excel 變成 JSON 的三種方法:線上工具、公式與 Python

表格怎麼變成介面要的 JSON?本文講清表頭對映成鍵名、一列變一個物件的規則,比較線上工具、Excel 公式與 Python 三條路,以及合併儲存格、日期與大數訂單號的坑。

為什麼要「表格變 JSON」

介面要 JSON,倉庫裡卻是 Excel——這是資料對接裡最常見的錯位。表格是給人看的二維結構:首列表頭,下面一列一筆記錄;JSON 是給程式讀的樹狀結構:一個物件一筆記錄,鍵名對應欄位。

轉換的本質就一條對映規則:表頭變成鍵名,每一列變成一個物件,所有列組成一個陣列。理解了這一點,三種方法只是在「誰來執行這條規則」上不同:瀏覽器裡的線上工具、Excel 自己的公式、或者 Python 指令碼。

方法一:線上工具,適合一次性的轉換

Excel 轉 JSON 工具走這條路:

  1. 上傳 .xlsx 檔案,或直接把從 Excel、WPS 裡複製的表格區域貼進去。
  2. 首列自動作為鍵名;多工作表的檔案可以切換匯出某一張,或一次匯出為「表名: 資料」的結構。
  3. 勾選需要的欄,只匯出業務欄位。
  4. 複製或下載結果。

幾個對結果影響很大的細節,這個工具都做了處理:數字與布林保留原生類型而不是全變字串;日期可以選擇 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,檔案全程不上傳伺服器;使用其他線上服務前應查看其隱私說明,含敏感資料的表格尤其要確認這一點。

相關閱讀