在Word中可將檔案通過OLE物件嵌入的方式插入到檔案,包括Word、excel、PDF、PPT、圖片、宏檔案、檔案包等在內的多種檔案型別,對檔案中已插入的檔案物件,也可通過本文中的方法提取出來另存到指定路徑,本文將通過C#程式代碼示例做詳細介紹,
dll檔案安裝(3種方法)
1.通過NuGet安裝dll(2種方法)
1.1可以在Visual Studio中打開“解決方案資源管理器”,滑鼠右鍵點擊“參考”,“管理NuGet包”,然后搜索“Free Spire.Doc”,點擊“安裝”,等待程式安裝完成,
1.2將以下內容復制到PM控制臺安裝,
Install-Package FreeSpire.Doc -Version 9.9.7
2.手動添加dll參考
可通過手動下載包到本地,然后解壓,找到BIN檔案夾下的Spire.Doc.dll,然后在Visual Studio中打開“解決方案資源管理器”,滑鼠右鍵點擊“參考”,“添加參考”,將本地路徑BIN檔案夾下的dll檔案添加參考至程式,
提取檔案
提取檔案時,主要通過以下步驟完成:
- 創建Document類的物件,并通過Document.LoadFromFile()方法加載Word檔案,
- 遍歷Word檔案中的所有Section中的子物件,判斷物件是否為Paragraph型別,
- 遍歷段落中的子物件,判斷物件是否為DocumentObjectType型別的OLE物件,
- 將符合條件的OLE物件通過as運算子轉換為DocOleObject型別,
- 通過File.WriteAllBytes()方法提取物件,保存到本地路徑,
注:以下代碼中所使用到的Word測驗檔案和提取到的多媒體檔案路徑為VS程式的Debug路徑,如:F:\VS2017Project\ ExtractMediaFile\bin\Debug ,
下面是完整代碼示例:
C#
using Spire.Doc; using Spire.Doc.Documents; using Spire.Doc.Fields; using System.IO; namespace ExtractMediaFile { class Program { static void Main(string[] args) { //加載Word檔案 Document doc = new Document(); doc.LoadFromFile(@"OLE.docx"); //遍歷所有子物件 foreach (Section section in doc.Sections) { foreach (DocumentObject obj in section.Body.ChildObjects) { if (obj is Paragraph) { Paragraph paragraph = obj as Paragraph; foreach (DocumentObject obj2 in paragraph.ChildObjects) { if (obj2.DocumentObjectType == DocumentObjectType.OleObject) { DocOleObject ole = obj2 as DocOleObject; //提取檔案 File.WriteAllBytes(ole.PackageFileName, ole.NativeData); } } } } } } } }
VB.NET
Imports Spire.Doc Imports Spire.Doc.Documents Imports Spire.Doc.Fields Imports System.IO Namespace ExtractMediaFile Class Program Private Shared Sub Main(args As String()) '加載Word檔案 Dim doc As New Document() doc.LoadFromFile("test.docx") '遍歷所有子物件 For Each section As Section In doc.Sections For Each obj As DocumentObject In section.Body.ChildObjects If TypeOf obj Is Paragraph Then Dim paragraph As Paragraph = TryCast(obj, Paragraph) For Each obj2 As DocumentObject In paragraph.ChildObjects If obj2.DocumentObjectType = DocumentObjectType.OleObject Then Dim ole As DocOleObject = TryCast(obj2, DocOleObject) '提取檔案 File.WriteAllBytes(ole.PackageFileName, ole.NativeData) End If Next End If Next Next End Sub End Class End Namespace
檔案讀取結果如圖:

推薦閱讀:C# / VB.NET 在Word中嵌入多媒體(視頻、音頻)檔案
—END—
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/434356.html
標籤:.NET技术
