C# 删除Word文档中的OLE对象
1、方法1:通过e-iceblueg官网下载pack包。下载后,解压文件,安装程序。安装后,将安装路径下Bin文件夹中的Spire.Doc.dll文件添加引用至vs程序。如下图:

2、方法2:可通过Nuget下载,地址:http://www.nuget.org/packages/Spire.Doc/
1、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(@"测试.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");
}
}
}