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 对象相关推荐

  1. Word控件Spire.Doc 转换教程(十二):如何将 Word 转换为 EPub、XPS、Emf

    本文将介绍一种通过名为 Spire.Doc 的强大且独立的Word .NET 组件将 Word 转换为 EPub.XPS.Emf的简单方法,无需在机器上安装 Microsoft Word.它还支持将 ...

  2. Word控件Spire.Doc 转换教程(二十三):保留或禁用从 Word 到 PDF 转换的超链接

    超链接为读者提供了更多的附加信息,它被广泛用于我们的 word 文档.Spire.Doc 具有强大的超链接文字元素操作功能.开发者可以在word文档中添加.修改和删除超链接.Spire.Doc for ...

  3. Word控件Spire.Doc 转换教程(十八): 将 RTF 转换为图像并重置图像分辨率

    Spire.Doc具有在 C# 和 VB.NET 中操作 RTF 文件格式的强大能力.通过使用 Spire.Doc,开发人员可以将 RTF 转换为 PDF.HTML和 .doc..docx 格式的 w ...

  4. Word控件Spire.Doc 转换教程(十一):如何将 HTML 转换为图像

    Spire.Doc 可以帮助用户使用 C#/VB.NET 将HTML 转换为 Image.该解决方案使用户可以随时随地通过手机.MP4播放器.PSP.iPad.iTouch等便携式设备阅读HTML.按 ...

  5. Word控件Spire.Doc 转换教程(七):如何将 Word 转换为 RTF

    为什么要将 Word 转换为 RTF? 自 1990 年代以来,Microsoft 开始为其一系列专有的文字处理格式使用 .doc 扩展名.Doc 格式通常与 Microsoft Office 应用程 ...

  6. Word控件Spire.Doc 转换教程(六):如何将 XML 转换为 Word

    为什么使用 C#/VB.NET 将 Office OpenXML 转换为 Word? 作为一种出色的编程语言,Office OpenXML 在其自然形式下很难导航和访问.将文件从 Office Ope ...

  7. Word控件Spire.Doc 转换教程(二十八):将 Word 转换为 PCL

    PCL 文件是以打印机命令语言(通常称为 PCL)页面描述语言创建的数字打印文档.从v7.1.19 开始,Spire.Doc 支持将 word 文档转换为 PCL.PCL文件的标准有很多种:这里的 P ...

  8. Word控件Spire.Doc 转换教程(二十五):在 C#、VB.NET 中将 ODT 转换为 DOC

    具有 .ODT 文件扩展名的文件是 OpenDocument 文本文档文件.这些文件通常由免费的 OpenOffice Writer 文字处理器程序创建.ODT 文件类似于与 Microsoft Wo ...

  9. Word控件Spire.Doc 转换教程(二十六):在 C#、VB.NET 中将 Word 转换为 EPUB 时添加封面图片

    我们之前介绍如何将 Word 转换为 EPUB的文档.但是,在从 Word 文档创建 EPUB 图书时,您可能希望将封面图像添加到 EPUB.以下代码片段将演示相同的内容. Spire.Doc for ...

  10. Word控件Spire.Doc 转换教程(九):在 Doc 转PDF 转换期间设置图像质量

    您可能会好奇为什么我们在将Doc 转换为 PDF时设置图像质量.在我们转换Word文档后,尤其是文档中有很多图像,输出的PDF文档的大小明显大于原始的Doc文件.现在,Spire.Doc 新版本的新功 ...

最新文章

  1. 使用Slf4j集成Log4j2构建项目日志系统的完美解决方案
  2. html中的容器和语义标签
  3. BZOJ4388 : JOI2012 invitation
  4. ###《Effective STL》--Chapter3
  5. 我的Go+语言初体验——(5)Go+ 基本语法之 Switch
  6. python operator 多属性排序_快速入门Python必备的基础知识
  7. python 编程服务_Python编写Windows Service服务程序
  8. 51nod 1292 字符串中的最大值V2(后缀自动机)
  9. CCF NOI1145 数字金字塔【DP】
  10. bzoj 1854: [Scoi2010]游戏(并查集)
  11. 空手套白狼,硬阅java字节码class文件
  12. 马尔可夫链模型的信贷风险分析与预测
  13. gps面积测量 java_GPS面积距离测量
  14. cfg文件怎么改回计算机程序,我把一个拓展名为cfg文件用word打开后,凡是cfg的文件图标都变成了word,肿么改回去?...
  15. [算法·思想]囚徒困境中Tit For Tat策略为什么就是最好的,之JAVA代码模拟实现
  16. 鸿蒙系统主页面斜纹,《中国美术欣赏》[精选].doc
  17. 罗技c270摄像头支持linux,电信局点使用罗技C270摄像头调试指导
  18. Unc0ver 8.0.0 更新:支持 iOS 14.6-14.8、A12-A13 iPhone 越狱
  19. 2016年全国计算机一级成绩查询时间,2016年3月计算机一级考试成绩什么时候出来...
  20. 使用python中TsTables 软件包追加写入数据出现“pandas.tseries has no attribute‘index‘”的问题

热门文章

  1. JavaScript实现十大排序算法(图文详解)
  2. MiraiQQ机器人框架部署教程
  3. 荣耀青春30青春版能升鸿蒙,荣耀30青春版参数配置 荣耀30青春版什么处理器
  4. Unity Shader-非主流纹理采样研究(流光,溶解,隐身效果)
  5. 支付宝之查看商户id
  6. PHP中strchr、strrchr、strpos、strrpos区别
  7. C4D随笔录 —— “布尔”生成器运用
  8. 3ds Max + VRay + Corona 建筑动画表现作品:177森林路住宅
  9. Spring5源码分析系列(二)Spring源码版本命名规则及下载安装
  10. php常用数组函数总结