以下经验内容将分享在C#程序中如何删除Word文档中的OLE对象。
工具/原料
Spire.Doc for .NET pack
Visual Studio
dll文件获取及引用:
1、方法1:通过e-iceblueg官网下载pack包。下载后,解压文件,安装程序。安装后,将安装路径下Bin文件夹中的Spire.Doc.dll文件添加引用至vs程序。如下图:
2、方法2:可通过Nuget下载,地址:http://www.nuget.org/packages/Spire.Doc/
C# 代码示例
1、using Spire.Doc;using Spire.Doc.Documents;using Spire.Doc.Fields;using System.IO;nam髫潋啜缅espace DeleteOLE_Doc{ class Program { static void Main(string[] args) { //实例化一个Document对象,加载一个包含OLE对象的文档 Document doc = new Document(); doc.LoadFromFile(@"测试.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对象对应的ProgID { //删除ole对象 obj.ChildObjects.Remove(Ole); } else if (s == "Excel.Sheet.12")//"Excel.Sheet.12"是指 Excel03之后的工作表对应的ProgID { //删除ole对象 obj.ChildObjects.Remove(Ole); } else if (s == "Word.Document.12") //"Word.Document.12"是指03之后的Word对应的ProgID { //删除ole对象 obj.ChildObjects.Remove(Ole); } } } } } } //保存文档 doc.SaveToFile("DeleteOLE.docx",FileFormat.Docx2013); System.Diagnostics.Process.Start("DeleteOLE.docx"); } }}