翻譯|使用教程|編輯:胡濤|2023-06-12 10:50:54.530|閱讀 165 次
概述:本文介紹如何使用 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 等格式
有時,我們需要提取嵌入在 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 工作簿。
//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工作簿的截圖:
完整代碼:
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@fc6vip.cn