C# 删除Word文档中的OLE对象

2025-10-16 15:07:52

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

C# 删除Word文档中的OLE对象

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");

        }

    }

}

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢