千家信息网

C#怎么实现提取Word中插入的多媒体文件

发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,这篇"C#怎么实现提取Word中插入的多媒体文件"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来
千家信息网最后更新 2025年01月17日C#怎么实现提取Word中插入的多媒体文件

这篇"C#怎么实现提取Word中插入的多媒体文件"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"C#怎么实现提取Word中插入的多媒体文件"文章吧。

在Word中可将文件通过OLE对象嵌入的方式插入到文档,包括Word、excel、PDF、PPT、图片、宏文件、文件包等在内的多种文件类型。对文档中已插入的文档对象,也可通过本文中的方法提取出来另存到指定路径。

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.DocImports Spire.Doc.DocumentsImports Spire.Doc.FieldsImports System.IONamespace 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 ClassEnd Namespace

文件读取结果如图:

以上就是关于"C#怎么实现提取Word中插入的多媒体文件"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

文件 对象 文档 内容 方法 路径 多媒体 类型 C# 代码 程序 管理 手动 文件夹 文章 方案 步骤 知识 篇文章 解决方案 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 战术小队服务器密码是什么 数据库基础命令 测试人员在软件开发中的目的 网络安全培训班开班时间 网络安全工程师中级证书 青浦区正规软件开发品质保障 软件开发的研究生和博士区别 远程维护数据库服务器不能实现 下列哪些故事全文类数据库 2018年平台租用服务器多少钱 江西质量软件开发要多少钱 科技届最火的卫星互联网 大方物业收费软件开发 淘宝上的服务器在哪 不属于软件开发危机 国家网络安全宣传片获奖名单 聊城诚润伟业网络技术中标 公司保洁管理数据库 银行软件开发外包人员面试题 兼职安卓软件开发 网络安全知识宣传手册获奖内容 数据库基础命令 hp服务器报报错代码 数据库服务器存储服务器 了解服务器 智阳网络技术怎么样北京 国内空间数据库发展 企业网络安全认证手段 数据库表格怎么查看 表格宏批量处理数据库
0