在瀏覽器中把 JSON 轉換成 Excel 而不使用 Power Query 需要三個步驟:貼上一個由物件組成的 JSON 陣列、點擊 Convert to Excel,然後下載一個名為 converted.xlsx 的檔案,第一個出現的物件鍵會保留為工作表標頭。整個轉換過程都在頁面內本機執行,因此 JSON 文字永遠不會離開瀏覽器,而產生的活頁簿是一張扁平、可編輯的資料表,可直接用於檢視、分享或後續匯入。字串、數字、布林值和 null 值會以一般儲存格值的形式寫入;巢狀物件和陣列則會以壓縮的 JSON 文字寫入單一儲存格中,因為扁平的工作表無法在不虛構欄位對應的情況下誠實地表示巢狀結構。解析器會事先拒絕無效的 JSON、空陣列、基本型別項目和空物件,並強制設定上限為 1,000,000 個輸入字元、10,000 列、200 欄和 200,000 個儲存格,以便工具能承諾只會出現「完整下載」或「不下載」兩種結果。

Power Query 是 Excel 中一個強大的功能,但它並不是從 JSON 負載到可用試算表的唯一途徑。它需要有可運作的 Excel 安裝環境、在某些設定中需要已登入的 Microsoft 帳號、對 M 語言具備處理非簡單結構的工作知識,並且願意在乾淨的資料表出現之前點過數個 Transform 對話框。對於 API 範例、設定檔匯出、分析回應或測試固定資料的一次性轉換來說,這些額外負擔通常並不划算。一個專用、瀏覽器端的工具只要一次點擊就能產生相同的扁平 .xlsx 成品,往往會是更合適的選擇。

how to convert json to excel using power query
在不使用 Power Query 的情況下將 JSON 轉換為 Excel:瀏覽器工作流程

當 Power Query 帶來過多阻力時

Power Query 的 Get Data → From File → From JSON 路徑是為了對穩定來源進行週期性的資料重新整理而設計的。它預期磁碟上有一個已儲存的 .json 檔案,會建立一個需要您自行編寫轉換步驟的查詢,並將這些步驟儲存在活頁簿中以便日後重新整理。當輸入只是您剛從 curl 回應、說明文件頁面或日誌控制台複製來的 JSON 片段時,每一個這樣的設計選擇都會變成阻力。

常見的痛點包括:

  • 本機必須安裝 Excel;Excel for the web 中沒有 Power Query。
  • 匯入工具要求副檔名為 .json 的 JSON 檔案;剪貼簿中的原始文字必須先包裝或儲存。
  • 由物件組成的巢狀陣列會觸發 Expand 對話框,其預設是沒有欄位,而且每個層級都必須重複操作。
  • 以 "=" 開頭的文字值會在重新整理時被解讀為公式,這會帶來安全性與資料完整性方面的疑慮。
  • 欄位順序是由推算出的資料表結構決定,而不是來源物件中欄位首次出現的順序。

如果上述步驟都不需要重複執行,而 JSON 本身基本上就是您想要的資料表,那麼 Power Query 的機制對這個任務來說就過於沉重。

JSON to Excel 轉換器的不同之處

JSON to Excel 轉換器是一個瀏覽器工具,接受一個由物件組成的 JSON 陣列,並輸出一個名為 converted.xlsx 的單一工作表 .xlsx 檔案。解析器與 SheetJS 寫入器都在頁面中執行;不會有任何內容 POST 到後端,也不需要管理帳號或工作階段。由於檔案是即時產生的,因此原始 JSON 文字始終處於您的掌控之下。

它的合約刻意設計得很窄。它不會推算結構描述、不會重新命名欄位、不會扁平化巢狀鍵,也不會從值的拼法猜測型別。它不會擷取 URL、不會合併檔案、不會修復格式錯誤的 JSON,也不會執行試算表公式。它實際做的事情是:保留陣列中鍵首次出現的順序、將字串、數字、布林值和 null 寫成一般儲存格值,並把任何巢狀內容序列化為壓縮的 JSON 文字寫入單一儲存格,讓扁平的工作表誠實地呈現它所能表示的內容。

若想更廣泛地了解為什麼對敏感負載來說「不上傳」的路徑很重要,在不上傳的情況下將 JSON 轉換為 Excel 資料表的指南會從不同角度說明相同的隱私界線。

在瀏覽器中將 JSON 轉換為 Excel

依照下列步驟,您就能從剪貼簿上的 JSON 片段一路走到下載完成的活頁簿。

  1. 準備一個由物件組成的 JSON 陣列。頂層的值必須是陣列,且每個陣列項目都必須是至少包含一個鍵的非空物件。有效的起始結構看起來像 [{"id":1,"name":"Ada"},{"id":2,"name":"Bo"}]。
  2. 在 JSON to Excel 轉換器頁面上,把 JSON 貼到轉換器的文字區域中。空陣列、基本型別項目或空物件會在開始時就被拒絕。
  3. 點擊 Convert to Excel。頁面會根據其限制驗證負載,然後僅在此時載入已鎖定的 SheetJS 核心來組裝 .xlsx 檔案。
  4. 在提示出現時儲存 converted.xlsx。檔名是固定的,因此交給同事或下游工具的流程是可預期的。
  5. 在 Excel、LibreOffice Calc、Google 試算表或其他試算表應用程式中開啟活頁簿,並確認標頭列的順序與 JSON 中鍵首次出現的順序一致。

如果您在建置流程中需要同一轉換的程式化版本,在 Python 中將 JSON 轉換為 Excel 的指南會介紹使用 pandas 與 openpyxl 達成相同結構的做法。

欄位順序、巢狀值與儲存格型別

有三個行為經常讓第一次使用的使用者感到意外,因此值得在您交出檔案之前先加以說明。

首次出現的欄位順序。工具會依序掃描陣列中的每個物件。每當第一次看到一個新鍵時,該鍵就會成為附加在已收集欄位之後的新欄位。之後若某個物件重複使用現有的鍵,就會填入對應的儲存格;若省略了某個鍵,則該儲存格會保持空白。如果您的 JSON 物件是來自 API 或設定檔匯出,且以穩定順序產生,那麼產生的標頭順序也會是穩定的。

巢狀物件與陣列。由於工作表儲存格無法在不虛構欄位對應的情況下誠實地表示巢狀結構,轉換器會將任何巢狀物件或陣列序列化為壓縮的 JSON 文字,並以單一字串儲存格的形式寫入。資料會逐字保留;巢狀結構只是以文字方式呈現,而不是展開成多個欄位。

儲存格型別與公式安全性。字串、數字、布林值和 null 值會以一般儲存格值的形式寫入活頁簿。以 "="、"+"、"-" 或 "@" 開頭的值會以純文字方式寫入,而不會被求值,因此來自不可信來源的負載無法在輸出中注入試算表公式。日期會以 JSON 中原本提供的形式呈現;轉換器不會套用至地區相關的日期顯示方式。

輸入值儲存格表示方式備註
"Ada"文字儲存格標準字串
42數字儲存格保留數字型別
true布林儲存格邏輯值
null空白儲存格不寫入任何值
{"x":1}內容為 {"x":1} 的文字儲存格巢狀物件以壓縮 JSON 表示
"=SUM(A1:A9)"內容為字面文字的文字儲存格不會被當作公式求值

限制、錯誤與造成拒絕的原因

轉換器強制設定了嚴格的上限,以便承諾提供一個完整的 .xlsx 下載,而非被截斷的意外結果。這些邊界值會顯示在頁面上,當任何一個被突破時,工具會以失敗關閉的方式中止。

限制數值失敗方式
輸入大小1,000,000 字元在解析前拒絕
列數10,000在計算陣列項目後拒絕
欄數200在收集鍵之後拒絕
儲存格數200,000若列數乘以欄數超過上限時拒絕

除了大小限制外,解析器還會拒絕無效的 JSON、空陣列、基本型別的非物件項目,以及沒有任何欄位的物件。這些情況都不會產生部分檔案;轉換根本就不會開始,這能讓磁碟上的交付結果要不是完全存在,就是完全不存在。工具不會悄悄省略鍵、不會截斷過長的字串,也不會猜測呼叫者的意圖。如果您的負載超出上述任何限制,請在送入之前先分割或重新調整輸入的形狀。

在交付之前驗證 converted.xlsx

由於轉換器將 JSON 文字視為事實來源,活頁簿是一個衍生的成品,原始 JSON 應與其一同保留,特別是在巢狀結構、null 語意、前導零字串或數值精確度帶有商業意義的時候。下載 converted.xlsx 之後,請在將會使用它的應用程式中開啟一次,並檢查三件事:標頭列與 JSON 鍵首次出現的順序相符、列數與陣列長度相符,以及任何巢狀值都是以壓縮 JSON 文字呈現,而非展開成多個欄位。

如果下游系統需要具型別的日期、至地區的格式、公式、圖表、註解、篩選、驗證規則或多張工作表,請在專為更豐富的活頁簿模型而設計的軟體中明確地準備這些內容。這裡產生的 .xlsx 檔案是資料交付,而非公式引擎,而這個範圍正是防止貼上的負載變成可執行的頁面或試算表邏輯的關鍵。請從一個精簡且具代表性的 JSON 範例開始,檢查產生的標頭順序,然後再將檔案傳遞給流程中的下一個系統。