彩票走势图

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

翻译|使用教程|编辑:胡涛|2023-06-12 10:50:54.530|阅读 83 次

概述:本文介绍如何使用 Spire.Doc 和 C# 从 word 文档中提取嵌入的 PDF 文档和 Excel 工作簿 欢迎查阅~

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

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 最新下载

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

下面是word文档的截图:

如何从 Word 文档中提取 OLE 对象

详细步骤:

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

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

第二步:遍历word文档,找到Ole Objects,然后获取每个Ole Object的Object类型,判断Ole Object是PDF文档还是Excel工作簿,将Ole对象的原生数据写入新的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);
}
}
}
}
}
}

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

如何从 Word 文档中提取 OLE 对象

如何从 Word 文档中提取 OLE 对象

完整代码:

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 文档中提取 OLE 对象,如果您有其他问题也可以继续浏览本系列文章,获取相关教程,你还可以给我留言或者加入我们的官方技术交流群。


欢迎下载|体验更多E-iceblue产品

获取更多信息请咨询  ;技术交流Q群(767755948)



标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP