C#实现提取Word中插入的多媒体文件(视频,音频)

作者:E-iceblue 时间:2022-09-06 14:45:20 

在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#实现提取Word中插入的多媒体文件(视频,音频)

来源:https://www.cnblogs.com/Yesi/p/15945014.html

标签:C#,Word,多媒体,文件
0
投稿

猜你喜欢

  • java图形用户界面实现菜单功能

    2023-11-23 11:50:58
  • sharding-jdbc5.0.0实现分表实践

    2023-12-07 10:12:26
  • Android6.0获取动态权限代码示例

    2022-07-22 10:35:15
  • 实现Android studio设置自动导包及自动导包快捷键

    2022-03-22 00:05:26
  • Java上传文件图片到服务器的方法

    2022-12-06 01:40:46
  • Spring AOP中的JDK和CGLib动态代理哪个效率更高?

    2023-07-02 18:42:50
  • Java并发编程之CountDownLatch源码解析

    2023-11-05 02:06:41
  • Android自定义Notification添加点击事件

    2022-04-06 19:06:30
  • java读写二进制文件的解决方法

    2022-08-03 14:45:55
  • 使用SpringMVC响应json格式返回的结果类型

    2022-06-29 20:29:46
  • 浅谈log4j的rootLogger及其他坑爹的地方

    2023-07-31 02:23:14
  • C#编程读取文档Doc、Docx及Pdf内容的方法

    2023-01-16 06:59:29
  • Spring AOP如何自定义注解实现审计或日志记录(完整代码)

    2022-03-28 02:19:34
  • Android绘制验证码的实例代码

    2023-10-30 13:57:15
  • Android使用SoundPool播放音效

    2021-11-24 02:32:36
  • 详解Java的文件与目录管理以及输入输出相关操作

    2022-05-03 15:07:22
  • C#短时间内产生大量不重复的随机数

    2023-11-28 00:15:53
  • Java 实战项目锤炼之网上商城系统的实现流程

    2022-06-26 17:21:47
  • Java并发内存模型详情

    2023-06-04 23:50:23
  • 微信开发--企业转账到用户

    2023-01-06 00:52:41
  • asp之家 软件编程 m.aspxhome.com