服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - C#实现提取Word中插入的多媒体文件(视频,音频)

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

2023-02-16 14:46E-iceblue C#

在Word中可将文件通过OLE对象嵌入的方式插入到文档,包括Word、excel、PDF、PPT、图片、宏文件、文件包等在内的多种文件类型。本文将利用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引用

可通过手动下载包到本地,然后解压,找到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#

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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中插入的多媒体文件(视频,音频)

到此这篇关于C#实现提取Word中插入的多媒体文件(视频,音频)的文章就介绍到这了,更多相关C#提取Word中多媒体文件内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.cnblogs.com/Yesi/p/15945014.html

延伸 · 阅读

精彩推荐
  • C#C#计算程序执行过程花费时间的方法

    C#计算程序执行过程花费时间的方法

    这篇文章主要介绍了C#计算程序执行过程花费时间的方法,涉及C#简单的时间运算技巧,具有一定参考借鉴价值,需要的朋友可以参考下...

    C#教程网10872021-10-26
  • C#c#基于opencv,开发摄像头播放程序

    c#基于opencv,开发摄像头播放程序

    这篇文章主要介绍了c#基于opencv,开发摄像头播放程序的示例,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下...

    源之缘7322022-11-04
  • C#浅谈C#中的Infinity和NaN

    浅谈C#中的Infinity和NaN

    下面小编就为大家带来一篇浅谈C#中的Infinity和NaN。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    C#教程网8032022-01-17
  • C#使用C#语言实现的查询条件界面展开和收起功能

    使用C#语言实现的查询条件界面展开和收起功能

    这篇文章主要介绍了使用C#语言实现的查询条件界面展开和收起功能的完美解决方案,需要的朋友可以参考下...

    北风其凉11532021-12-10
  • C#C# 位图BitArray的使用

    C# 位图BitArray的使用

    如果我们着重处理一个以位为单位的数据时,就可以考虑使用位数组。本文就介绍了C# 位图BitArray的使用,感兴趣的可以了解一下...

    有态度的马甲5992022-11-24
  • C#C# 类的声明详解

    C# 类的声明详解

    本文主要对C# 类的声明进行详细介绍。具有一定的参考价值,下面跟着小编一起来看下吧...

    liyongke7872021-12-20
  • C#C#实现简单俄罗斯方块

    C#实现简单俄罗斯方块

    这篇文章主要为大家详细介绍了C#实现简单俄罗斯方块,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    q6459896378912022-08-29
  • C#C#开发Windows窗体应用程序的简单操作步骤

    C#开发Windows窗体应用程序的简单操作步骤

    这篇文章主要介绍了C#开发Windows窗体应用程序的简单操作步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    明日学院5352022-11-12