Word .NET庫組件Spire.Doc系列教程(45):在C# Word 中刪除OLE對象
Spire.Doc for .NET是一個專業(yè)的Word .NET庫,設(shè)計用于幫助開發(fā)人員高效地開發(fā)創(chuàng)建、閱讀、編寫、轉(zhuǎn)換和打印任何來自.NET( C#, VB.NET, ASP.NET)平臺的Word文檔文件的功能。
本系列教程將為大家?guī)鞸pire.Doc for .NET在使用過程中的各類實際操作,上一篇講解如何在C# Word 中添加、修改和提取 OLE,本文將繼續(xù)介紹如何刪除OLE對象。
12月優(yōu)惠進行時,Spire.Office套包優(yōu)惠7170元起,心動就趕快咨詢在線客服吧!
推薦閱讀:【想要快速完成文檔格式轉(zhuǎn)換嗎?Spire系列組件格式轉(zhuǎn)換完整攻略來啦!】
OLE(Object Linking and Embedding,對象連接與嵌入)是一種面向?qū)ο蟮募夹g(shù)。OLE分為兩種形式,一種是嵌入,一種是鏈接。前者是將對象嵌入到文檔中,不管外部對象怎么更改都是以嵌入操作當(dāng)時的對象為準(zhǔn),之后不再改變。而后者是以鏈接形式來保存對象的,外部任何對該對象的更改都會影響文檔。
刪除OLE
測試文檔中的OLE對象如下:
using Spire.Doc; using Spire.Doc.Documents; using Spire.Doc.Fields; using System.IO; namespace DeleteOLE_Doc { class Program { static void Main(string[] args) { //實例化一個Document對象,加載一個包含OLE對象的文檔 Document doc = new Document(); doc.LoadFromFile(@"test.docx"); //遍歷文檔所有Section foreach (Section sec in doc.Sections) { //遍歷Section下面所有的子元素 foreach (DocumentObject obj in sec.Body.ChildObjects) { if (obj is Paragraph) { Paragraph par = obj as Paragraph; //遍歷段落中的對象 for (int i = 0; i < par.ChildObjects.Count;i++ ) { DocumentObject o = par.ChildObjects[i]; //獲取ole對象 if (o.DocumentObjectType == DocumentObjectType.OleObject) { DocOleObject Ole = o as DocOleObject; string s = Ole.ObjectType; if (s == "AcroExch.Document.11")//"AcroExch.Document.11"是指PDF對象對應(yīng)的ProgID { //刪除ole對象 obj.ChildObjects.Remove(Ole); } else if (s == "Excel.Sheet.12")//"Excel.Sheet.12"是指 Excel03之后的工作表對應(yīng)的ProgID { //刪除ole對象 obj.ChildObjects.Remove(Ole); } else if (s == "Word.Document.12") //"Word.Document.12"是指03之后的Word對應(yīng)的ProgID { //刪除ole對象 obj.ChildObjects.Remove(Ole); } } } } } } //保存文檔 doc.SaveToFile("DeleteOLE.docx",FileFormat.Docx2013); } } }
OLE對象刪除結(jié)果: