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

目录
  • dll文件安装(3种方法)
  • 提取文件
  • 完整代码
    • C#
    • VB.NET

在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中插入的多媒体文件(视频,音频)的文章就介绍到这了,更多相关C#提取Word中多媒体文件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C#生成Word文件(图片、文字)

    本文实例为大家分享了C#生成Word文件的具体代码,供大家参考,具体内容如下 通过Microsoft.Office.Interop.Word生成Word文档 1.引用类 WordReport.cs,代码如下: using System; using System.Collections.Generic; using System.Text; using Microsoft.Office.Interop.Word; using MSWord = Microsoft.Office.Interop.W

  • C# VB.NET 实现在Word中嵌入多媒体(视频、音频)文件

    目录 引入dll 嵌入多媒体文件 主要代码步骤解析 嵌入效果后的文档效果 注意事项 引入dll 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引用 可

  • C#实现给Word每一页设置不同图片水印

    目录 方法思路 dll引入 方法1 方法2 代码示例 C# vb.net Word中设置水印时,可加载图片设置为水印效果,但通常添加水印效果时,会对所有页面都设置成统一效果,如果需要对每一页或者某个页面设置不同的水印效果,则可以参考本文中的方法.下面,将以C#代码为例,对Word每一页设置不同的图片水印效果作详细介绍. 方法思路 在给Word每一页添加水印前,首先需要在Word文档每一页正文的最后一个字符后面插入“连续”分节符,然后在每一节的页眉段落里添加水印图片,并设置图片的坐标位置.对齐方式

  • C#实现读取txt文件生成Word文档

    目录 dll文件安装(3种方法) 读取txt生成Word 注意事项 总结 本文将以C#程序代码为例介绍如何来读取txt文件中的内容,生成Word文档.在编辑代码前,可参考如下代码环境进行配置: Visual Studio 2017 .Net Framework 4.6.1 Free Spire.Doc for .NET .txt文档 dll文件安装(3种方法) 1.通过NuGet安装dll(2种方法) 1.1 可以在Visual Studio中打开“解决方案资源管理器”,鼠标右键点击“引用”,“

  • C#操作Word打印的示例

    话不多说,解释在代码注释中-- class PrintClass { #region 全局变量 private DataGridView datagrid;//需要打印的数据来源 private PageSetupDialog pagesetupdialog; private PrintPreviewDialog printpreviewdialog; int currentpageindex = 0;//当前页的编号 int rowcount = 0;//数据的行数 public Size P

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

    目录 dll文件安装(3种方法) 提取文件 完整代码 C# VB.NET 在Word中可将文件通过OLE对象嵌入的方式插入到文档,包括Word.excel.PDF.PPT.图片.宏文件.文件包等在内的多种文件类型.对文档中已插入的文档对象,也可通过本文中的方法提取出来另存到指定路径.本文将通过C#程序代码示例做详细介绍. dll文件安装(3种方法) 1.通过NuGet安装dll(2种方法) 1.1可以在Visual Studio中打开“解决方案资源管理器”,鼠标右键点击“引用”,“管理NuGet

  • 使用C#实现在word中插入页眉页脚的方法

    针对Word的操作是很多程序都具备的功能,本文即以实例展示使用C#实现在word中插入页眉页脚的方法,供大家参考借鉴,具体方法如下: 一.插入页脚的方法: public void InsertFooter(string footer) { if (ActiveWindow.ActivePane.View.Type == WdViewType.wdNormalView || ActiveWindow.ActivePane.View.Type == WdViewType.wdOutlineView)

  • Python提取Word中图片的实现步骤

    目录 1.思路 2.具体实现 2.1导入相关库 2.2定义函数 2.3重命名word文件,将后缀名docx改为zip 2.4zip还原为docx文件,并获得图片的列表 2.5将图片复制到需要保存的文件夹中 2.6删除tmp缓冲文件夹中的文件,用以存储下一次的文件 2.7运行程序 3效果预览 3.1源word 3.2提取的图片 4附:doc转docx 1.思路 在网上查找了半天,基本都是提取word中文字的,没有找到可以把word中的图片提取出来的方法.一个巧合的情况下,发现将word的后缀名改为

  • C#/VB.NET实现在 Word 中插入水印 

    目录 前言 安装 在 Word 文档中插入文本水印 在 Word 文档中插入图片水印 前言 水印是指在 Word 文档的背景中以淡色或灰色显示的文本或图像.它们可用于声明文档的机密性.版权或其他属性,也可以仅用作装饰,使文档更具吸引力.下面将为大家展示如何使用Spire.Doc for .NET在C#和VB.NET程序中给Word文档插入文本水印和图片水印. 安装 首先,我们需要将 Spire.Doc for.NET 包中包含的 DLL 文件添加为 .NET 项目中的引用.可以从​​此链接​​下

  • Java在Word中插入上标和下标的实现方法

    目录 前言 程序环境配置 安装Spire.Doc for Java 使用Java在Word中插入上标和下标 步骤 代码实现 效果图 在某些情况下,你可能需要在Microsoft Word中插入上标和下标.例如,当你正在创建一个涉及科学公式的学术文件时. 前言 在某些情况下,你可能需要在Microsoft Word中插入上标和下标.例如,当你正在创建一个涉及科学公式的学术文件时.在这篇文章中,你将学习如何使用Spire.Doc for Java库在Word文档中插入上标和下标. 程序环境配置 安装

  • html中插入avi格式视频文件的代码

    复制代码 代码如下: <object id="video" width="400" height="200" border="0" classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA"> <param name="ShowDisplay" value="0"> <param name=&

  • html中插入rm格式视频文件的代码

    复制代码 代码如下: <OBJECT ID=video1 CLASSID="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" HEIGHT=288 WIDTH=352> <param name="_ExtentX" value="9313"> <param name="_ExtentY" value="7620"> <param

  • html中插入wmv格式视频文件的代码

    复制代码 代码如下: <object width=200 height=180 classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715" standby="Loading Microsoft Windows

  • 在html中插入mpg格式视频文件的代码

    复制代码 代码如下: <object classid="clsid:05589FA1-C356-11CE-BF01-00AA0055595A" id="ActiveMovie1" width="239" height="250"> <param name="Appearance" value="0"> <param name="AutoStart&

  • python提取word文件中的所有图片

    前言 办公中,偶尔会碰到一种情况,需要提取word文档中的图片,决定写这样一款工具自动提取图片. 关于脚本的使用: 情景1:如果你拿到的是一个文件夹,所有的word文件都在这个文件夹的子目录下,深度为1层,你可以直接使用该脚本 情景2:如果你拿到的是一个文件夹,打开之后,里面杂乱无章的充斥着各种文件,你也不确定word文档都在哪,那么你需要使用Everything来手动提取出所有的word文档,虽然我也可以让脚本实现这个功能,但是使用脚本需要考虑到有可能存在同名文件,再处理起来代码量会更大,还是

随机推荐