Word控件Spire.Doc 【其他】教程(6):从 Word 中提取 OLE 对象
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)https://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 中插入上标和下标,如果您有其他问题也可以继续浏览本系列文章,获取相关教程,你还可以给我留言或者加入我们的官方技术交流群。
Word控件Spire.Doc 【其他】教程(6):从 Word 中提取 OLE 对象相关推荐
- Word控件Spire.Doc 转换教程(十二):如何将 Word 转换为 EPub、XPS、Emf
本文将介绍一种通过名为 Spire.Doc 的强大且独立的Word .NET 组件将 Word 转换为 EPub.XPS.Emf的简单方法,无需在机器上安装 Microsoft Word.它还支持将 ...
- Word控件Spire.Doc 转换教程(二十三):保留或禁用从 Word 到 PDF 转换的超链接
超链接为读者提供了更多的附加信息,它被广泛用于我们的 word 文档.Spire.Doc 具有强大的超链接文字元素操作功能.开发者可以在word文档中添加.修改和删除超链接.Spire.Doc for ...
- Word控件Spire.Doc 转换教程(十八): 将 RTF 转换为图像并重置图像分辨率
Spire.Doc具有在 C# 和 VB.NET 中操作 RTF 文件格式的强大能力.通过使用 Spire.Doc,开发人员可以将 RTF 转换为 PDF.HTML和 .doc..docx 格式的 w ...
- Word控件Spire.Doc 转换教程(十一):如何将 HTML 转换为图像
Spire.Doc 可以帮助用户使用 C#/VB.NET 将HTML 转换为 Image.该解决方案使用户可以随时随地通过手机.MP4播放器.PSP.iPad.iTouch等便携式设备阅读HTML.按 ...
- Word控件Spire.Doc 转换教程(七):如何将 Word 转换为 RTF
为什么要将 Word 转换为 RTF? 自 1990 年代以来,Microsoft 开始为其一系列专有的文字处理格式使用 .doc 扩展名.Doc 格式通常与 Microsoft Office 应用程 ...
- Word控件Spire.Doc 转换教程(六):如何将 XML 转换为 Word
为什么使用 C#/VB.NET 将 Office OpenXML 转换为 Word? 作为一种出色的编程语言,Office OpenXML 在其自然形式下很难导航和访问.将文件从 Office Ope ...
- Word控件Spire.Doc 转换教程(二十八):将 Word 转换为 PCL
PCL 文件是以打印机命令语言(通常称为 PCL)页面描述语言创建的数字打印文档.从v7.1.19 开始,Spire.Doc 支持将 word 文档转换为 PCL.PCL文件的标准有很多种:这里的 P ...
- Word控件Spire.Doc 转换教程(二十五):在 C#、VB.NET 中将 ODT 转换为 DOC
具有 .ODT 文件扩展名的文件是 OpenDocument 文本文档文件.这些文件通常由免费的 OpenOffice Writer 文字处理器程序创建.ODT 文件类似于与 Microsoft Wo ...
- Word控件Spire.Doc 转换教程(二十六):在 C#、VB.NET 中将 Word 转换为 EPUB 时添加封面图片
我们之前介绍如何将 Word 转换为 EPUB的文档.但是,在从 Word 文档创建 EPUB 图书时,您可能希望将封面图像添加到 EPUB.以下代码片段将演示相同的内容. Spire.Doc for ...
- Word控件Spire.Doc 转换教程(九):在 Doc 转PDF 转换期间设置图像质量
您可能会好奇为什么我们在将Doc 转换为 PDF时设置图像质量.在我们转换Word文档后,尤其是文档中有很多图像,输出的PDF文档的大小明显大于原始的Doc文件.现在,Spire.Doc 新版本的新功 ...
最新文章
- 使用Slf4j集成Log4j2构建项目日志系统的完美解决方案
- html中的容器和语义标签
- BZOJ4388 : JOI2012 invitation
- ###《Effective STL》--Chapter3
- 我的Go+语言初体验——(5)Go+ 基本语法之 Switch
- python operator 多属性排序_快速入门Python必备的基础知识
- python 编程服务_Python编写Windows Service服务程序
- 51nod 1292 字符串中的最大值V2(后缀自动机)
- CCF NOI1145 数字金字塔【DP】
- bzoj 1854: [Scoi2010]游戏(并查集)
- 空手套白狼,硬阅java字节码class文件
- 马尔可夫链模型的信贷风险分析与预测
- gps面积测量 java_GPS面积距离测量
- cfg文件怎么改回计算机程序,我把一个拓展名为cfg文件用word打开后,凡是cfg的文件图标都变成了word,肿么改回去?...
- [算法·思想]囚徒困境中Tit For Tat策略为什么就是最好的,之JAVA代码模拟实现
- 鸿蒙系统主页面斜纹,《中国美术欣赏》[精选].doc
- 罗技c270摄像头支持linux,电信局点使用罗技C270摄像头调试指导
- Unc0ver 8.0.0 更新:支持 iOS 14.6-14.8、A12-A13 iPhone 越狱
- 2016年全国计算机一级成绩查询时间,2016年3月计算机一级考试成绩什么时候出来...
- 使用python中TsTables 软件包追加写入数据出现“pandas.tseries has no attribute‘index‘”的问题
热门文章
- JavaScript实现十大排序算法(图文详解)
- MiraiQQ机器人框架部署教程
- 荣耀青春30青春版能升鸿蒙,荣耀30青春版参数配置 荣耀30青春版什么处理器
- Unity Shader-非主流纹理采样研究(流光,溶解,隐身效果)
- 支付宝之查看商户id
- PHP中strchr、strrchr、strpos、strrpos区别
- C4D随笔录 —— “布尔”生成器运用
- 3ds Max + VRay + Corona 建筑动画表现作品:177森林路住宅
- Spring5源码分析系列(二)Spring源码版本命名规则及下载安装
- php常用数组函数总结