Word 文檔中最常見的元素莫過於文字與圖片。若僅需提取少量圖片,在 Word 中右鍵選擇「另存為圖片」即可;但面對大量文檔或自動化處理需求時,程式化提取才是正解。本文將示範如何使用 C# 搭配 Spire.Doc for .NET 免費版元件,快速遍歷文檔並將所有內嵌圖片匯出為 PNG 檔案。
Spire.Doc 套件(或手動參考 DLL)。法國景點.docx)。
using System;
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System.Drawing; // 儲存圖片時需用到 ImageFormat
Document document = new Document("法國景點.docx");
Word 文檔結構為 Document → Sections → Paragraphs → ChildObjects,圖片在物件模型中表現為 DocPicture 型別。
int index = 0;
foreach (Section section in document.Sections)
{
foreach (Paragraph paragraph in section.Paragraphs)
{
foreach (DocumentObject docObject in paragraph.ChildObjects)
{
// 判斷是否為圖片
if (docObject.DocumentObjectType == DocumentObjectType.Picture)
{
DocPicture picture = docObject as DocPicture;
// 以索引命名,統一輸出為 PNG
string imageName = string.Format(@"images\Image-{0}.png", index);
picture.Image.Save(imageName, System.Drawing.Imaging.ImageFormat.Png);
index++;
}
}
}
}
using System;
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System.Drawing;
namespace ExtractImageFromWord
{
class Program
{
static void Main(string[] args)
{
// 1. 載入文檔
Document document = new Document("法國景點.docx");
int index = 0;
// 2. 遍歷並提取
foreach (Section section in document.Sections)
{
foreach (Paragraph paragraph in section.Paragraphs)
{
foreach (DocumentObject docObject in paragraph.ChildObjects)
{
if (docObject.DocumentObjectType == DocumentObjectType.Picture)
{
DocPicture picture = docObject as DocPicture;
string imageName = string.Format(@"images\Image-{0}.png", index);
picture.Image.Save(imageName, System.Drawing.Imaging.ImageFormat.Png);
index++;
}
}
}
}
Console.WriteLine($"共提取 {index} 張圖片,已儲存至 images 資料夾。");
Console.ReadKey();
}
}
}
程式執行完成後,專案輸出目錄下的 images 資料夾將包含所有提取出的 PNG 圖片:

HeaderFooter、TextBox 等集合。