C# 提取Word中插入的多媒體檔案(視訊、音訊)
在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引用
可通過手動下載Free Spire.Doc for .NET包到本地,然後解壓,找到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
檔案讀取結果如圖:
—END—
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31499788/viewspace-2862815/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java 在Word中嵌入多媒體(視訊、音訊)檔案Java音訊
- C# / VB.NET 在Word中嵌入多媒體(視訊、音訊)檔案C#音訊
- 風雲音訊處理大師提取視訊中的音訊檔案的方法音訊
- 15個線上多媒體(圖片、音訊、視訊)編輯器音訊
- Mac線上視訊音訊提取工具Mac音訊
- 掌握HTML5中的多媒體–音訊(audio)HTML音訊
- 風雲音訊處理大師提取影片中的音訊檔案的方法音訊
- 如何下載微信公眾號中的音訊、視訊檔案?音訊
- 掌握HTML5中的多媒體–視訊(video)HTMLIDE
- android音視訊指南-支援的媒體格式Android
- 前端Html5(2)之多媒體音訊視訊標籤前端HTML音訊
- 分享下 PHP 使用 getID3 來獲取音訊、視訊等媒體檔案相關資訊PHP音訊
- [Android多媒體技術] 播放Raw/Assets音視訊方法總結Android
- Android 多媒體之 Silk 格式音訊解碼Android音訊
- 鴻蒙ArkWeb 元件多媒體探究:從影片到音訊鴻蒙Web元件音訊
- android音視訊指南-響應媒體按鈕Android
- WAV音訊檔案中隱藏惡意軟體音訊
- Android多媒體之SoundPool+pcm流的音訊操作Android音訊
- ffmpeg 匯出影片檔案中的音訊音訊
- 短視訊“音訊化”,音樂“視訊化”音訊
- android音視訊指南-媒體應用架構概述Android應用架構
- 自帶多媒體視訊播放器Infuse pro播放器
- 音視訊--音訊入門音訊
- 音視訊–音訊入門音訊
- HTML的音訊和視訊HTML音訊
- C#程式呼叫FFmpeg操作音視訊C#
- PDF、PPT、Excel、Word、視訊等格式檔案線上預覽Excel
- 音視訊--視訊入門
- Python批量提取Word檔案題庫中的答案Python
- 如何在PR中同步音訊和視訊音訊
- [- 多媒體 -] OpenGLES3.0 接入視訊實現特效 - 引言S3特效
- AQ錄製軟體批量匯入視訊檔案並且合併視訊檔案的方法
- MIT 最新技術:從靜音視訊中提取聲音MIT
- wavesurfer fluent-ffmpeg提取音訊音訊
- FMS 流媒體視訊技術
- 萬彩動畫大師教程 | 如何匯出工程檔案裡的音訊、視訊?動畫音訊
- Java 新增 、讀取以及刪除PPT幻燈片中的視訊、音訊檔案Java音訊
- Android音視訊之MediaPlayer音視訊播放Android