Excel 轉 JSON 轉換器

線上把 Excel 轉成 JSON:免費、即時、私密。檔案在你的瀏覽器裡處理,不上傳伺服器。

結果

轉換後的檔案和預覽會顯示在這裡。

已準備好。選擇一個表格檔開始轉換。

轉換原理

  • 第一列會作為標題列,其儲存格成為 JSON 的欄位名,之後每一列對應一個物件。
  • 只讀取活頁簿的第一個工作表。

表格檔會在你的瀏覽器本機轉換,不會上傳到 BroBroGo。

常見問題

Excel 怎麼轉成 JSON?

拖入 Excel 檔案,點擊轉換,幾秒就能下載 JSON 檔案,還附結果預覽,全程在本機完成。

檔案最大能轉多大?

單個檔案最多 8 MB、10,000 列、200 欄。資料更大時,建議先拆成小檔案。

XLSX 轉 JSON:瀏覽器端的類型感知轉換

這個工具的作用非常直接:你上傳一個 Excel(.xlsx)檔案,它會將第一個工作表內的資料表轉換成結構化的 JSON 檔案回傳給你。整個過程完全在你的瀏覽器中完成,伺服器不會收到任何資料。

看似簡單,但 XLSX 轉 JSON 與轉 CSV 有本質上的不同。XLSX 檔案本質上是一個壓縮的 XML 活頁簿,能夠承載多個工作表、多種儲存格類型(文字、數字、日期、布林值)、公式以及豐富的格式設定。JSON 則是一種具有型別且可嵌套的格式——支援物件、陣列、數字、布林值和空值。因此,在從 XLSX 轉換到 JSON 時,數字與布林值可以保留為具有型別的 JSON 值,而不是被強制轉成帶引號的字串。儲存格格式、公式(不會被重新計算)以及第一個工作表之外的資料都會被捨棄。不同於 CSV 將每一列壓平成純文字行,JSON 能將表格結構表示為物件陣列,並將欄位名稱作為鍵值。然而,XLSX 表格本身是平面的,不存在階層結構,因此不會自動產生巢狀 JSON。

輸入與輸出

  • 輸入:一個 XLSX 檔案(可拖放或從檔案選擇器選取)。
  • 輸出:一個可供下載的 JSON 檔案、預覽結果(前 8 列和前 8 欄)、轉換後的表格列數與欄數,以及輸出 JSON 的檔案大小。

規則與邊界情況

  • 工具僅讀取 XLSX 檔案的第一個工作表
  • 使用儲存格的可見值;計算公式——公式儲存格的結果是最後儲存時的值。
  • 儲存格樣式、合併儲存格與格式化(字型、顏色、邊框)不會保留。
  • 若 XLSX 檔案無法被解析,會顯示錯誤訊息「此 Excel 檔案無法開啟。」。
  • 若第一個工作表沒有任何資料列,則會出現「此檔案沒有表格列。」錯誤。
  • 檔案大小與列/欄數限制:若檔案超過 8 MB 大小,會顯示「此檔案太大。請使用小於 ‹max› 的檔案。」。同樣地,若表格超過 10,000 列或 200 欄,會顯示對應的錯誤。
  • 其他錯誤訊息包括:「請選擇 CSV、JSON 或 XLSX 檔案。」、「無法轉換此檔案。」、「轉換已取消。」、「此轉換花費時間過長。請嘗試較小的檔案。」。

誰需要這個工具

  • 一位 Web 開發者,收到產品資料的 Excel 試算表,需要轉換成 JSON 以提供 API 或前端應用程式使用。
  • 一位資料分析師,希望快速將季度報告(XLSX)轉換成機器可讀的 JSON 格式,以便進行後續處理。
  • 一個團隊,與偏好 JSON 而非 Excel 的外部合作夥伴協作,需要進行一次性轉換且無需安裝軟體。
  • 任何注重隱私的使用者,希望在不上傳檔案到雲端服務的情況下完成 XLSX 轉 JSON 的轉換。

XLSX 的內部結構

XLSX 檔案遵循 Office Open XML(OOXML)標準,其核心是一個 ZIP 壓縮檔。解壓縮後,你會看到一個由 XML 檔案組成的目錄結構。xl/workbook.xml 定義了所有工作表的名稱與順序。xl/worksheets/sheet1.xml 包含實際的表格資料。

這個 XML 使用 <row><c>(cell)元素。每個儲存格標籤都有一個 r 屬性(如 A1、B2)來定位,以及一個可選的 t 屬性來表示資料型別:s(共享字串)、b(布林值)、e(錯誤)、inlineStr(內嵌字串)。若無 t 屬性,則 v 元素的內容會被視為數字或日期。共享字串儲存在 xl/sharedStrings.xml 中,可避免重複儲存大量重複文字。

JSON 的資料型別與語法

JSON 的核心規格定義於 RFC 7159。它支援六種型別:

  • 物件:以 {} 包覆的鍵值對集合,鍵必須是字串。
  • 陣列:以 `` 包覆的有序值清單。
  • 字串:以雙引號包覆的 Unicode 字元序列。
  • 數字:可以是整數或浮點數,使用 base-10 表示法。
  • 布林值truefalse
  • 空值null

轉換時,工具會將 Excel 中的表格每列對應成一個 JSON 物件,第一列作為鍵(欄位名稱),後續列作為值。陣列則用來包裝所有物件。

Excel 儲存格型別的對應方式

這是轉換中最關鍵也最常被誤解的部分。

  • 數字:Excel 中不含 t 屬性的儲存格,其 v 元素值會直接成為 JSON 中的數字型別。例如 42 會輸出為 42,而不是 "42"。這對需要數值計算的 API 至關重要。
  • 布林值:Excel 以 t="b" 標記的儲存格,其 v 值為 01。工具會將其轉換為 JSON 的 falsetrue
  • 文字:使用共享字串或 inlineStr 的儲存格,轉換為 JSON 的字串型別
  • 日期:Excel 將日期儲存為序列值(serial number),例如 2024-01-01 對應到 45382(在某些版本中)。工具會讀取這個數字,並將其轉換為 ISO 8601 格式的字串,例如 "2023-08-15T00:00:00.000Z"
  • 空白儲存格:轉換為 JSON 中的空字串 ""。這不同於包含空字串 "" 的儲存格。
  • 錯誤值#DIV/0! 等錯誤值會變成帶有該錯誤字串的 JSON 字串。

範例:Excel 表格

Name Age Active
Alice 30 TRUE
Bob FALSE

轉換為 JSON

[
  { "Name": "Alice", "Age": 30, "Active": true },
  { "Name": "Bob", "Age": "", "Active": false }
]

注意 Age30 是數字(無引號),Activetruefalse 是布林值,而 Bob 的年齡空缺變成 ""

為何公式會消失

工具讀取的是 XLSX 檔案中儲存的「最後計算值」,而非公式本身。這是設計上的必然:瀏覽器中用於解析 XLSX 的機制並未包含 Excel 的計算引擎。當你在 Excel 中輸入 =A1+B1 並儲存,檔案中同時記錄了公式字串 (<f>=A1+B1</f>) 和最後一次計算的結果值 (<v>5</v>)。轉換時,工具會略過 <f> 元素,僅使用 <v> 元素。因此,任何依賴自動重新計算的邏輯都無法在轉換後的 JSON 中重現。

為何只讀取第一個工作表

這是基於簡潔與常見使用模式的決定。絕大多數 XLSX 轉 JSON 的需求都集中在單一資料表上。若要處理多個工作表,你必須將每個工作表分別匯出為獨立的 XLSX 檔案,再個別進行轉換。

客戶端處理的隱私優勢

所有檔案處理都在瀏覽器內進行。你的瀏覽器會解析活頁簿——一個 XML 部分的 ZIP 套件——並在你的裝置上寫入轉換後的輸出。沒有任何資料片段透過網路傳輸。這意味著即使包含敏感資訊(如客戶名單、薪資資料),也不會離開你的電腦。

轉換後的資料驗證

成功轉換不代表資料完美無缺。常見的陷阱包括:

  • 合併儲存格:僅左上角的儲存格有值,其餘為空,轉換後會產生大量空字串。
  • 空白列:手動插入的空白列會造成 JSON 中出現全空字串值的物件,應事先清除。
  • 隱藏欄位:Excel 中的隱藏欄位仍會被讀取並包含在 JSON 中,你必須在轉換前手動取消隱藏或刪除。
  • 多行表頭:若第一列不是純粹的欄位名稱(例如跨越兩列),JSON 的結構會不如預期。

常見問題

轉換後的 JSON 中,日期顯示為一串數字,怎麼辦?

這是因為日期在 Excel 中儲存為序列值。工具會將其轉換為 ISO 8601 格式的字串(例如 "2023-08-15T00:00:00.000Z")。原始的 Excel 格式遮罩會被捨棄。若你需要特定的日期格式,你必須對 ISO 字串進行後續處理。

我的 Excel 檔案有 10 個工作表,如何全部轉換?

這個工具只處理第一個工作表。若你需要其他工作表的資料,你必須先在 Excel 中將該工作表移至第一個位置,然後再上傳。

為什麼 JSON 中的布林值變成字串 "TRUE""FALSE"

這表示原始 Excel 檔案中的布林值儲存為文字,而非原生布林資料型別。檢查你的 Excel 表格,該欄位可能被設定為文字格式。在 Excel 中將該欄位改回「一般」格式後重新輸入 TRUE 或 FALSE,再進行轉換。

我的表格有合併儲存格,轉換後資料不完整,怎麼辦?

合併儲存格只有左上角有值。最佳做法是在轉換前取消合併,並將值複製到所有相關儲存格中。

轉換後 JSON 檔案大小比原始 XLSX 大很多,正常嗎?

很正常。XLSX 是壓縮格式(ZIP),而 JSON 是純文字。如果原始資料包含大量重複字串,XLSX 可透過共享字串表大幅減小體積,但 JSON 會完整儲存每個字串,導致檔案體積增加。

我可以控制 JSON 的輸出格式嗎?例如用陣列代替物件?

目前工具使用標準的物件陣列格式。若要更改結構,你需要在轉換後對 JSON 進行二次處理。