一個現代的 .xlsx 活頁簿是一個 ZIP 封裝檔,Excel 將每張內嵌圖片都以獨立圖片檔的形式儲存在名為 xl/media 的資料夾中。擷取這些圖片意味著還原 Excel 本身儲存在 xl/media 下的原始圖片位元組——無需擷取工作表的螢幕畫面、無需重繪圖片,也無需將活頁簿傳送到遠端伺服器。「從 Excel 擷取圖片」工具會在您的瀏覽器中本機讀取 .xlsx 封裝檔,列出它所找到的支援媒體項目,並讓您單獨下載每張圖片,或透過單一 ZIP 封存檔一次取得所有還原的檔案。由於輸出的是封裝檔中的原始資料承載,而非重繪的畫布,因此透明度、色彩深度與像素尺寸會與活頁簿作者當初儲存時完全一致。這種方法適用於產品照片、標誌、掃描檔、頁首圖片,以及任何以媒體檔形式放入活頁簿中的圖片。

extract images from excel explained
從 Excel 擷取圖片說明:媒體資料夾到 ZIP

Excel 如何將圖片儲存在 .xlsx 檔案內部

副檔名為 .xlsx 的現代 Excel 檔案是一個 Office Open XML 封裝檔——一個具有由 ECMA-376 Office Open XML 標準所定義之特定資料夾結構的 ZIP 封存檔。在該封存檔內部,Excel 將工作表儲存為 XML 部件、將繪圖物件儲存為獨立的 XML 部件、儲存共用樣式、計算鏈,以及——只要內嵌了圖片——就會在名為 xl/media 的資料夾下儲存一個或多個圖片檔。

拖曳到工作表上的照片、放置在頁首的標誌、掃描的簽名,或以圖片形式匯出的圖表,各自會成為該資料夾中的一個檔案,通常使用常見的圖片檔副檔名命名,並賦予一個編號識別碼,例如 image1.png。工作表的繪圖 XML 透過關聯 ID 來參考該圖片,但圖片本身在封裝檔中是一個普通的獨立檔案。正是這種分離,使忠實還原成為可能——視覺內容並非根據儲存格值即時產生,而是作為資料直接封裝在活頁簿中。

這種結構(亦記載於 Microsoft Open XML 說明文件中),正是無需啟動 Excel 或依賴伺服器端轉檔器即可還原影像的原因。讀取封裝檔、找出位於 xl/media 之下的項目,並將這些項目寫回磁碟,即可產生一份與活頁簿作者最初放置內容完全相同的副本。

為何螢幕擷取會遺失原始影像的細節

擷取工作表的螢幕畫面感覺像是最快的選項(特別是針對單張圖片),但它擷取的是包含影像在內的已渲染格線。儲存格框線、格線、凍結窗格、頁首文字以及目前的縮放等級,都會成為圖片的一部分。透明度會被壓平到螢幕當下所顯示的背景顏色上。如果影像比可見視窗大,螢幕擷取還會將其裁切;而任何部分位於畫面外的內容,都會完全消失。為了修正這些問題而調整螢幕擷取影像的大小,意味著重新壓縮已經被壓縮過一次的像素。

擷取原始資料承載則可完全避免上述問題。PNG 保留其 alpha 通道、JPG 保留其原始壓縮設定,像素尺寸與活頁簿作者儲存的內容一致。擷取工具不會在畫布上重繪影像,也不會將其轉換為另一種格式——它會原封不動地將 xl/media 中的位元組複製到您的下載資料夾。下載的檔案就是封裝檔中的影像資料承載,而非螢幕擷取畫面、重新匯出的版本,或經過轉換的副本。

對於包含大量圖片的工作表而言,差距會更大。對每張圖片按右鍵並選擇「另存圖片」在前幾張時尚可,但速度緩慢,產生的檔案經常帶有 Excel 的壓縮瑕疵,而且任何經過裁切、重新上色或與圖案分層的圖片都會失去保真度。直接存取封裝檔則可跳過這所有步驟,並產生與原本放入活頁簿內容完全相同的檔案。

如何從 Excel 活頁簿擷取圖片

從 Excel 擷取圖片工具採用上述三步驟的 Office Open XML 擷取流程。以下為確切的操作步驟:

  1. 開啟工具,使用檔案選擇器從您的裝置中選擇一個 .xlsx 活頁簿。
  2. 等待瀏覽器在本機開啟封裝檔、驗證 ZIP 目錄,並列出儲存在 xl/media 下的支援圖片檔。
  3. 單獨下載每張原始影像以進行選擇性還原,或使用「全部下載」選項,以單一 ZIP 封存檔接收所有偵測到的圖片。

無需帳號、無需上傳步驟,也沒有將活頁簿傳送到任何地方的選項。瀏覽器會讀取封存檔的中央目錄,然後走訪 xl/media 下符合的項目並將其提供為下載。JSZip 僅在您選擇檔案後才會載入,因此網頁本身在活頁簿載入前保持輕量。如果封裝檔中不包含任何支援的內嵌媒體,工具會清楚地回報該情況,而非從圖表或儲存格範圍捏造一張影像。

擷取工具提取的內容與不會處理的內容

Office 封裝格式不會讓每個視覺物件都成為圖片檔。擷取工具專門檢查儲存在 xl/media 下的項目,因此您收到的內容取決於每個視覺元素最初的儲存方式。下表概述了哪些常見的活頁簿視覺內容可還原為獨立檔案,哪些則作為 XML 指令保留在封裝檔內部。

視覺元素 在 .xlsx 內部的儲存方式 是否可還原為原始圖片檔
內嵌相片(PNG、JPG、BMP、GIF) xl/media 下的獨立檔案
內嵌向量圖片(EMF、WMF) xl/media 下的獨立檔案 是,保留原始位元組
放置於頁首或頁尾的圖片 xl/media 下的獨立檔案,由頁首 XML 參考
已放置於工作表但稍後移除的影像 獨立檔案仍存在於 xl/media 中 是,前提是媒體項目仍然存在
原生 Excel 圖表 繪圖 XML 與圖表 XML 部件,無媒體項目
插入的圖案、SmartArt 或文字方塊 描述向量幾何的繪圖 XML
條件式格式化圖示集 工作表 XML 中的樣式規則
儲存格填色、圖樣或主題色彩 由工作表參考的樣式表
透過 URL 連結的外部影像 繪圖 XML 中僅有 URL,無媒體項目
另存為圖片的圖表(從其他應用程式匯出) xl/media 下的獨立檔案

誠實的規則很簡短:若圖片是以媒體項目形式儲存於封裝檔中,工具就能回傳其位元組。若視覺內容是以繪圖 XML 描述、僅以 URL 形式保留,或作為樣式規則儲存,則不會出現在擷取結果中,工具會回報該情況而非進行猜測。擷取工具僅回報它所找到的支援檔案;它不會聲稱該清單能證明目前的擺放位置、閱讀順序、工作表中的影像尺寸,或在 Excel 套用裁切與效果後的可見外觀。封裝檔也可能保留已不再顯示於工作表上的媒體項目,因此還原結果可能包含不再對應工作表表面任何內容的檔案。

本機處理與安全界線

由於活頁簿保留在您的裝置上,唯一離開裝置的檔案就是您選擇下載的那些。瀏覽器會將 .xlsx 作為 ZIP 封存檔讀取,在解壓縮任何項目之前檢查中央目錄,然後走訪 xl/media 下的支援檔案。擷取工具對目錄項目數量與展開後的資料量強制實施有限的封裝檔限制,因此格式錯誤、使用不支援的 ZIP64 目錄欄位,或僅僅是不包含任何支援媒體的活頁簿,會被拒絕並附上說明,而非進行部分解壓縮。

此行為可防範兩種常見的故障模式。第一種是損壞的封存檔:截斷或毀損的 .xlsx 可能解壓縮出誤導性的檔案名稱或零位元組項目,而中央目錄檢查就是在任何資料承載寫入磁碟之前攔截此情況的把關機制。第二種是不安全的輸入:旨在濫用路徑遍歷、zip 炸彈或超大目錄的封存檔,會在同一關卡被擋下。一般的活頁簿不應需要數千個目錄項目或數十 MB 的展開後資料,才能還原一組適度的圖片。

該工具也對其接受的活頁簿類型劃定了明確的界線。支援現代的 Excel .xlsx 檔案。不支援舊版二進位 .xls 檔案、密碼保護的封裝檔,以及內容完全由 XML 指令或外部連結組成的活頁簿——這些不會被轉換或猜測處理,而是被回報為超出範圍,且不會產生部分輸出。範圍刻意設定得很窄,以確保還原結果對其所產生的內容保持誠實。

處理還原後的影像

一旦原始媒體檔案存放到您的裝置上,下一步通常取決於這些圖片在活頁簿中的用途。若要進行快速的大小健全性檢查再行重複使用,Image Compressor 可在瀏覽器中縮小 JPG、PNG 或 WebP,並顯示實際的輸出大小。若網頁或縮圖需要特定的像素尺寸,Image Resizer 可設定精確尺寸而無需上傳檔案。

關於格式轉換,WebP Converter 可在 JPG、PNG 與 WebP 之間切換,而 Image to PDF 可將還原後的圖片彙整成單一 PDF,每頁一張影像。若要估算還原後圖片的列印大小,DPI Converter 可將像素尺寸與所選的 DPI 轉換為英吋與公分值,而不會更動檔案本身。

一個簡單的計算範例可讓 ZIP 大小估算變得直觀。假設某個活頁簿包含 12 張產品照片,每張磁碟平均大小為 250 KB。影像資料本身為 12 × 250 KB = 3,000 KB。標準的 ZIP store 模式封存檔每個項目約增加 1 KB 的本地標頭額外負擔,再加上總共約 1 KB 的小型中央目錄。加上這些額外負擔後,最終封存檔約為 3,000 KB + 12 KB + 1 KB ≈ 3,013 KB——由於 PNG 與 JPG 已經過壓縮,在 ZIP 內部不會進一步縮小,因此接近個別檔案的總和。改為單獨下載影像,則會產生 12 個檔案,共計正好 3,000 KB,沒有任何封存檔外層。

有一點整理工作值得留意。擷取工具保留的是影像檔本身,而非其在工作表中的位置、標題或與工作表的關聯。若原始版面配置很重要,請保留來源活頁簿,並在刪除或重新發佈任何內容之前,將每個還原的檔案名稱與來源工作表進行比對。為了謹慎的交接作業,請下載原始檔案、保持活頁簿不變,並驗證圖片數量與預期還原數量相符。