Excel 資料整理

JSON 資料怎麼放進 Excel?先拆訂單與品項再轉 CSV

將訂單 JSON 放進 Excel 前,先決定每列代表訂單或品項,拆開巢狀資料並統一欄位,再用匯入預覽核對編碼、型別與筆數。

撰文: 3sec 編輯部 資料查證日期: 4 分鐘閱讀 1957 字

把 JSON 放進 Excel 前,先決定每一列究竟代表一張訂單還是一個商品品項。巢狀物件與清單若沒有先拆開,即使成功產生 CSV,也可能留下無法篩選的文字、漏掉欄位,或讓訂單金額在明細列重複計算。

先看 Excel 能不能直接匯入 JSON

需要定期更新同一份資料時,先用 Excel 內建的 Power Query,比每次手動轉成 CSV 更容易保留處理步驟。Microsoft 目前的桌面說明路徑是 資料 > 取得資料 > 從檔案 > 從 JSON;選取檔案後會進入 Power Query 編輯器,再檢查自動偵測與展開的結果。

Microsoft Support 目前將這份 Power Query 匯入說明列為適用於 Excel for Microsoft 365、Excel for Microsoft 365 for Mac、Excel 2024、Excel 2021、Excel 2019 與 Excel 2016。上述選單是這次核對的桌面流程;Mac、網頁版、不同語言或受組織管理的功能區可能不一樣。Microsoft Learn 也提醒,連接器能力會隨宿主與部署時程不同,所以找不到 JSON 入口時,不應假設只是檔案壞掉。

Power Query 的自動表格偵測會嘗試攤平資料,但它不知道公司的訂單模型。若來源要反覆重新整理、需要展開多層清單或建立可追蹤的轉換步驟,留在 Power Query 處理;只有一次性交付平面資料,或接收端明確要求 CSV 時,才考慮先整理成穩定的物件陣列再轉換。

用「一列代表什麼」拆開訂單資料

一張 CSV 只適合承載一種穩定的列結構。以網店匯出的訂單為例,頂層可能有 order_id、下單時間、客戶物件與 items 品項陣列;直接把整個物件塞進一列,並不會自動變成好用的 Excel 表格。

可以先在欄位清單中做兩個明確決定:

  • orders.csv 每列是一張訂單,保留 order_id、時間、配送方式與總額。
  • order_items.csv 每列是一個品項,保留 order_id、sku、數量與單價。
  • 兩份資料都以 order_id 當對帳鍵,但不要把訂單總額複製到每一個品項後再加總。
  • 姓名、地址、電話或備註只有在確有權限與用途時才加入;結構測試先使用合成資料。
  • 缺少欄位、空字串與 null 要先約定不同意義,不能等到 Excel 顯示空白才猜。

例如測試訂單 TW-00731 含兩個品項,其中一個 SKU 是 000042,備註含逗號與換行。這筆資料同時能檢查關聯、前導零、引號與換行,比只用一筆全是英數字的乾淨樣本更能提早暴露問題。

轉換前讓每個物件擁有相同欄位

ToolboxHub 的 CSV ⇄ JSON 互轉工具適合處理已經整理平整的貼上文字,不負責替巢狀資料設計表格。JSON 轉 CSV 時,頂層必須是非空白陣列;若陣列裡是物件,目前元件只用第一個物件的鍵建立標題列。

這個限制表示第一筆資料不能碰巧少欄。後面的物件缺少既有鍵時會得到空白儲存格,多出第一筆沒有的鍵時則不會新增欄位。巢狀物件可能變成 [object Object],陣列也可能只剩逗號串接的文字;兩種結果都不代表關聯資料已被正確保留。

先用 JSON 格式化與驗證工具確認語法、層級與最外層確實是陣列,再抽查第一筆、中間一筆與最後一筆的鍵。接著一次只貼入 orders 或 order_items 的平面物件陣列,執行 JSON → CSV。工具會在值含分隔符號、逗號、雙引號或換行時加入必要引號,但輸出仍只是 CSV 文字。

ToolboxHub 不會在這個流程中開啟、編輯或儲存 XLSX,也不會替你建立兩張工作表、設定欄位型別或驗證訂單總額。把結果另存成新的 UTF-8 CSV,保留原始 JSON 與欄位清單,才能在發現問題時重新產生,而不是直接修改唯一來源。

在 Excel 匯入預覽先攔下型別錯誤

新 CSV 應先走 Excel 的匯入預覽,不要直接雙擊後就存檔。Microsoft 目前的桌面流程是 資料 > 取得資料 > 從檔案 > 從文字/CSV;另一份現行支援頁也列出 Excel for Microsoft 365、Excel 2024、Excel 2021、Excel 2019 與 Excel 2016。

預覽先核對編碼與分隔符號,再選擇載入或轉換資料。TW-00731 與 000042 這類代碼應指定為文字,日期要確認年月日與時區,金額則要確認小數點和幣別。Microsoft 說明指出,直接開啟 CSV 會依目前的預設資料格式解讀欄位,因此「看起來有分欄」仍可能已經改掉前導零或日期。

若只想再看一次抽取後的行列,可以用 CSV / Excel 線上預覽工具開啟不敏感的小樣本。它可以預覽、搜尋並把目前工作表另匯出成 CSV,但不能編輯 XLSX 後寫回原檔;畫面也只顯示有限筆符合資料,不能用來證明整個大型檔案完整。

用對帳鍵與筆數完成驗收

完成轉換後,要從一張已知訂單一路對回原 JSON、兩份 CSV 與 Excel 載入結果。只檢查標題列或第一頁畫面,抓不到後段多出的鍵、遺失的品項與錯誤型別。

  • orders 筆數等於預期訂單數,order_items 筆數等於所有品項數。
  • 每個品項的 order_id 都能在訂單表找到,而且沒有孤立或重複關聯。
  • 第一筆沒有漏掉後續需要的欄位,欄名與順序符合欄位清單。
  • 000042 的前導零仍在,逗號、雙引號、換行與中文各自留在正確儲存格。
  • 空字串、缺少鍵與 null 的結果符合接收端約定。
  • 原始 JSON 保持不變,交付的是新 CSV,而不是把來源覆寫掉。

任何筆數或鍵值對不上時,都應回到保留的平面陣列與欄位清單修正後重做。不要在大型 CSV 裡逐格搬動資料,因為那會讓下一次轉換無法重現,也更難說明哪一條規則造成結果。

常見問題

Excel 可以直接開 JSON,不先轉成 CSV 嗎?

可以,前提是目前 Excel 宿主提供 Power Query JSON 連接器。桌面版可先找 資料 > 取得資料 > 從檔案 > 從 JSON,再審查自動展開與型別步驟;找不到時要核對版本與產品說明。

為什麼巢狀物件會變成 [object Object]?

因為 CSV ⇄ JSON 互轉工具不會遞迴攤平物件。應先選出需要的純量欄位、把品項拆成另一份表,或改用 Power Query 明確展開。

後面的訂單多一個欄位,工具會自動補表頭嗎?

不會。目前表頭取自第一個物件,多出的後續鍵不會自動成為新欄。轉換前要讓同一張表的每個物件都有一致的鍵集合。

CSV / Excel 線上預覽可以直接修改工作簿嗎?

不能。它只預覽瀏覽器抽取的資料、提供搜尋,並可把目前工作表另匯出成 CSV;不會編輯儲存格或把變更寫回原 XLSX。

匯入預覽正常就能交付嗎?

還不能。預覽能發現編碼、分隔符號與部分型別問題,但仍要比較筆數、對帳鍵、代表訂單、敏感欄位權限與接收端規則。

參考資料