Word控件Spire.Doc 【其他】教程(6):从 Word 中提取 OLE 对象

news/2025/2/12 3:21:09/

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转换和打印Word/PDF/Excel等格式文件处理,小巧便捷。 

E-iceblue 功能类库Spire 系列文档处理组件均由中国本土团队研发,不依赖第三方软件,不受其他国家的技术或法律法规限制,同时适配国产操作系统如中科方德、中标麒麟等,兼容国产文档处理软件 WPS(如 .wps/.et/.dps 等格式

Spire.Doc for.NET 最新下载(qun:767755948)icon-default.png?t=N4P3https://www.evget.com/product/3368/download

有时,我们需要提取嵌入在 word 文档中的 OLE 对象。使用 Spire.Doc,我们只需几行代码即可轻松完成此任务。本文介绍如何使用 Spire.Doc 和 C# 从 word 文档中提取嵌入的 PDF 文档和 Excel 工作簿。

下面是word文档的截图:

详细步骤:

第一步:实例化一个Document对象,加载word文档。

Document doc = new Document();
doc.LoadFromFile("OleObject.docx");

第二步:遍历word文档,找到Ole Objects,然后获取每个Ole Object的Object类型,判断Ole Object是PDF文档还是Excel工作簿,将Ole对象的原生数据写入新的PDF文档或Excel 工作簿。

下面是运行代码后提取的PDF文件和Excel工作簿的截图:

//Traverse through all sections of the word document
foreach (Section sec in doc.Sections)
{
//Traverse through all Child Objects in the body of each section
foreach (DocumentObject obj in sec.Body.ChildObjects)
{
if (obj is Paragraph)
{
Paragraph par = obj as Paragraph;
//Traverse through all Child Objects in Paragraph
foreach (DocumentObject o in par.ChildObjects)
{
//Find the Ole Objects and Extract
if (o.DocumentObjectType == DocumentObjectType.OleObject)
{
DocOleObject Ole = o as DocOleObject;
string s = Ole.ObjectType;
//If s == "AcroExch.Document.11", means it’s a PDF document
if (s == "AcroExch.Document.11")
{
File.WriteAllBytes("Result.pdf", Ole.NativeData);
}
//If s == " Excel.Sheet.12", means it’s an Excel workbook
else if (s == "Excel.Sheet.12")
{
File.WriteAllBytes("Result.xlsx", Ole.NativeData);
}
}
}
}
}
}

完整代码

using System.IO;
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;namespace Extract_OLEObjects_from_Word
{
class Program
{
static void Main(string[] args)
{
Document doc = new Document();
doc.LoadFromFile("OleObject.docx");foreach (Section sec in doc.Sections)
{
foreach (DocumentObject obj in sec.Body.ChildObjects)
{
if (obj is Paragraph)
{
Paragraph par = obj as Paragraph;
foreach (DocumentObject o in par.ChildObjects)
{
if (o.DocumentObjectType == DocumentObjectType.OleObject)
{
DocOleObject Ole = o as DocOleObject;
string s = Ole.ObjectType;
if (s == "AcroExch.Document.11")
{
File.WriteAllBytes("Result.pdf", Ole.NativeData);
}
else if (s == "Excel.Sheet.12")
{
File.WriteAllBytes("Result.xlsx", Ole.NativeData);
}
}
}
}
}
}
}
}
}

以上便是在 Word 中插入上标和下标,如果您有其他问题也可以继续浏览本系列文章,获取相关教程,你还可以给我留言或者加入我们的官方技术交流群。


http://www.ppmy.cn/news/224859.html

相关文章

pgsql grant语句针对属性授予权限

教材上的 GRANT 语句格式为&#xff1a; grant <权限列表> on <数据库对象> to <用户或角色> [ with grant option ]; 授权选项&#xff1a;允许该用户或角色将自己被授予的权限授予其它用户或角色。使用如下&#xff1a; grant <权限列表> on <…

【信息查询的官方网站】

查失信人去中国文书裁判网&#xff1b; 网址&#xff1a; https://wenshu.court.gov.cn/website/wenshu/181029CR4M5A62CH/index.html 查企业信息去启信宝&#xff08;收费&#xff09;非官方 https://www.qixin.com/?frombaidusemBrand1-1 天眼查&#xff08;收费&#xf…

【日常分享】知道手机号,如何查姓名?

【小技巧】知道手机号&#xff0c;如何查姓名&#xff1f; 只要手机号绑定了支付宝&#xff0c; 1、打开支付宝APP向对方手机号码转账 使用工商银行卡付款 2、再去你用的银行APP-我的账户-查询明细-交易场所会显示对方姓名。邮政、工商、网商&#xff08;其他自测&#xff09;有…

个人信息查询

中国裁判文书网:https://wenshu.court.gov.cn/ 中国执行信息公开网:http://zxgk.court.gov.cn/ 国家企业信用信息公示系统:http://www.gsxt.gov.cn/index.html

据公安部姓名查询系统,全国最爆笑的人名

据公安部姓名查询系统,全国最爆笑的人名~~ 刘产 扬伟 赖月京(还是个男的) 范剑 姬从良 范统 夏建仁 朱逸群 秦寿生(亏他父母想的出) 庞光 杜琦燕 魏生津 矫厚根 沈京兵 杜子腾 排名第一的&#xff1a;史珍香

用人名查电话

n input() dicAreas {mayun: 13309283335, zhaolong: 18989227822, zhangmin: 13382398921, Gorge: 19833824743,Jordan: 18807317878, Curry: 15093488129, Wade: 19282937665} if n in dicAreas:print(dicAreas[n]) else:print("not found")

查询同名学生的名字和记录数

SELECT * FROM test.employee; insert into employee(id,name)values(1,tom); insert into employee(id,name)values(2,tom); insert into employee(id,name)values(3,jack); select name,count(name) from employee group by name having count(name)>1 参考以上sql ,分组后…

快速人名查找

题目描述&#xff1a;https://pycoder.blog.csdn.net/article/details/125703694 #include <stdio.h> #include <stdlib.h> #include <string.h>char *name_word[10] {0}; char dstName[10] {0};int dfs(int word_len, int word_index, int dstNameLen, i…