Excel 網頁版自動儲存後框線消失的原因與修復方法

| Excel | 2 Reads

一份 Excel 活頁簿上傳到 OneDrive 後,在網頁版打開時框線還在。只改了一格文字,等自動儲存完成再開啟,卻發現其他區域的框線、底色和粗體都消失了。

這次實測的觸發條件是 Excel 網頁版儲存了使用隱藏命名樣式的活頁簿。 儲存後,樣式名稱還在檔案裡,原本套用它的儲存格卻失去了格式索引。

只改一格文字的 A/B 實驗

用合成資料做兩份 .xlsx,各有 34 個套用命名樣式的儲存格,包含實線、虛線、點線及合併儲存格的雙線外框。解包逐項比對,上傳前的唯一差異是 PreservedFormat13 和 PreservedFormat14 有沒有 hidden="1"。

兩份上傳到同一個 OneDrive 資料夾,第一次在 Excel 網頁版開啟時都顯示原本的框線。接著把測試區外的 A1 從 BEFORE 改成 AUTOSAVE-OK。等網頁版確認儲存,再從 OneDrive 下載兩份檔案,核對新值和工作表 XML。Microsoft 的 OneDrive 網頁版編輯說明

Excel 網頁版重開 A 檔,兩個測試區的框線與底色消失,對照區的紫色框線仍在
A|保留隱藏屬性
34 格失去樣式索引。重新開啟後,兩個測試區的框線與底色消失。
Excel 網頁版重開 B 檔,兩個測試區的藍綠框線、虛線及合併區的雙線外框仍在
B|移除隱藏屬性
34 格仍引用原本的命名樣式,框線完整保留。

兩份檔案都存進了相同的新值,合併範圍也保留。畫面下方的紫色框線是對照組,使用一般格式,在 A、B 都保留下來。

樣式還在,為什麼框線會消失?

在 .xlsx 裡,工作表 XML 的 <c> 用 s 找到 xl/styles.xml 裡的 cellXfs 格式記錄。這筆記錄的 xfId 可以指向 cellStyleXfs 裡的基礎樣式。cellStyles 裡的命名樣式也透過 xfId 指向相應的基礎樣式。Microsoft 的儲存格索引說明、格式記錄規格

規格允許在 <cellStyle> 上設定 hidden,用途是在應用程式的介面隱藏這個樣式。A 檔存回後,兩個帶 hidden="1" 的命名樣式都還在,但測試格的 s 消失了。那些儲存格回到預設格式。命名樣式與 hidden 屬性的規格

B 檔也有索引重排。例如 A3 的 s 從 35 變成 2,但新索引解析後仍指向 PreservedFormat13,框線的線型和顏色相同。比對時要沿著索引確認它所指向的格式。

交給網頁版共同編輯前怎麼預防

先保留原檔。用 ZIP 工具開啟待上傳的 .xlsx 副本,檢查內部的 xl/styles.xml。確認儲存格引用了這次出問題的命名樣式後,從對應的 <cellStyle> 移除 hidden="1",保留樣式名稱、xfId 和既有的儲存格格式記錄。重新封裝時維持原來的檔案路徑和目錄層級。

<!-- 修改前 -->
<cellStyle name="PreservedFormat13" xfId="13" hidden="1"/>
<cellStyle name="PreservedFormat14" xfId="14" hidden="1"/>

<!-- 修改後 -->
<cellStyle name="PreservedFormat13" xfId="13"/>
<cellStyle name="PreservedFormat14" xfId="14"/>

讓副本走完一次「網頁版改值、自動儲存、重新開啟」的流程,確認受影響的框線仍在。若是由腳本產出或修改活頁簿,把存檔後的檢查加入交付流程。

已經掉框線的檔案怎麼修

如果儲存格的樣式索引已被移除,單靠取消隱藏補不回原本的格式。 先保存目前的檔案,再從 OneDrive 版本歷程或本機備份找出框線還在的版本。能接受回到舊內容時,可用版本歷程還原。Microsoft 的 Excel 版本還原步驟

需要保留後續輸入的資料時,用正常版本作為格式來源,在目前檔案的副本上修補。兩份的工作表與儲存格位置一致時,可在桌面版 Excel 對受影響範圍選擇性貼上格式。若由程式修復,要把舊版的實際格式映射到新版的格式記錄,並驗證框線、合併區與既有值。

This article was last edited at