在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—

C# 提取Word中插入的多媒体文件(视频、音频)的更多相关文章

  1. 怎样在Word中插入代码并保持代码原始样式不变

    怎样在Word中插入代码并保持样式不变 我们有时候需要在word中添加一段我们写的代码,但是把代码粘贴到word文档中之后就发现所有的代码的样子都变了,我们可以采用下边的方法来实现保持代码原来的样式和 ...

  2. 使用EndNote在Word中插入参考文献的格式设置

    endnote其实自带了很多参考文献格式的样式,如下图,但往往跟我们要使用的会有所出入,本文主要介绍的就是设置自定义endnote参考文献格式,以endnote X6和word2003为例,其它版本以 ...

  3. word中插入myth type公式行距变大的问题

    在写文章时,我遇到了在word中插入myth type公式时,行距明显变大的问题,我通过改变段落中的行距没有解决问题,在网上查了一下,找到一些解决方法,仅供参考. 解决办法

  4. 不用MathType, 如何在Mac Word中插入公式

    不用MathType, 如何在Mac Word中插入公式 找了好久都找不到MathType的破解版,不得不使用免费清爽的MarkDown编辑工具Typora_for_Mac. 我是很喜欢Typora的 ...

  5. 计算机_软件技巧_01_优雅地再word中插入代码

    二.参考资料 1.如何优雅的在 Microsoft word中插入代码

  6. Java 提取Word中的文本和图片

    本文将介绍通过Java来提取或读取Word文档中文本和图片的方法.这里提取文本和图片包括同时提取文档正文当中以及页眉.页脚中的的文本和图片. 使用工具:Free Spire.Doc for Java ...

  7. java向word中插入Excel附件

    1.word中插入对象的原理 编辑word,向word中插入图片.EXCEL.WORD等附件,再将word保存为xml格式,通过XML查看工具打开xml格式的word的源码,通过对比源码, 可以发现平 ...

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

    Word中可将Office(Word/Excel/PowerPoint).PDF.txt等文件作为OLE对象插入到文档中,双击该对象可直接访问或编辑该文件,除了以上常见的文件格式对象,也可以插入多媒体 ...

  9. Java 在Word中嵌入多媒体(视频、音频)文件

    Word中可将Office(Word/Excel/PowerPoint).PDF.txt等文件作为OLE对象插入到文档中,双击该对象可直接访问或编辑该文件,除了以上常见的文件格式对象,也可以插入多媒体 ...

随机推荐

  1. vue传参子传父

    vue子传父用$emit实现 1.文件目录结构 2.parent父组件内容 <template> <div class="wrap"> <div> ...

  2. 【C++】类-基础知识

    类-基础知识 目录 类-基础知识 1. 语法定义 2. 类的实现 3. 三个基本的函数 3.1 构造函数 功能 形式 调用时机 默认构造函数 3.2 复制构造函数 功能 形式 调用时机 3.3 析构函 ...

  3. Qt之消息对话框

    widget.h: #ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include<QLineEdit> class ...

  4. Go 面向对象编程应用

    #### Go 面向对象编程应用前面学习了很多的基础知识,这一节来实际写一个小案例:涉及到的知识: 1. 数组的基本使用2. 结构体3. 切片 4. 方法5. 循环6. 函数返回值(命名返回值,普通返 ...

  5. java-异常-异常应用

    1 package p1.exception; 2 3 4 /* 5 * 老师用电脑上课. 6 * 7 * 问题领域中涉及两个对象. 8 * 老师,电脑. 9 * 10 * 分析其中的问题. 11 * ...

  6. 前端基础之SCC

    目录 一:SCC 1.什么数SCC? 2.CSS3语法 3.语法结构 4.注释语法 5.css代码书写位置(引入方式) 二:scc代码书写位置(引入方式实战) 1.style内部直接编写css代码 2 ...

  7. Nginx限制连接控制访问量

    目录 一:限制连接数模块(同时访问网址能访问多少次) 1.修改网址模块文件 2.测试 3.重启 4.增加解析ip 5.压力测试 二:控制Nginx访问量 1.连接池 2.限制数 3.测试 4.重启 5 ...

  8. python代码加注释--6

    备注:#用来注释代码,#后面的内容会被python解释器忽略

  9. Kubernetes的Controller进阶(十二)

    一.Controller 既然学习了Pod进阶,对于管理Pod的Controller肯定也要进阶一下,之前我们已经学习过的Controller有RC.RS和Deployment,除此之外还有吗,如果感 ...

  10. django入门 03 模板语法

    变量值从views.py传入html 基本语法 {{ abc }} 变量abc外,用双大括号包裹 {% for item in abc %} 语句外,用大括号+百分号包裹 1. 传递字符串 views ...