Spire.Doc for .NET
Visual Studio
下载安装后,注意在程序中添加引用Spire.Doc.dll(dll可在安装路径下的bin文件夹中获取)
using Spire.Doc;using Spire.Doc.Documents;using Spire.Doc.Fields;using System.IO; namespace ReadOLE_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; //遍历这个section下面的段落 foreach (DocumentObject o in par.ChildObjects) { //找到OLE对象,并根据类型提取 if (o.DocumentObjectType == DocumentObjectType.OleObject) { DocOleObject Ole = o as DocOleObject; /*ObjectType属性可以获取ole对象的具体类型。 注意,如果是用Spire.Doc添加的ole对象的话,需要在AppendOleObject 的时候先声明OleObjectType,不然这里得不到具体的类型,只会得到Package*/ string s = Ole.ObjectType; //'AcroExch.Document.11'是指PDF对象对应的ProgID if (s == 'AcroExch.Document.11') { File.WriteAllBytes('Result.pdf', Ole.NativeData); } //'Excel.Sheet.12'是指 Excel03之后的工作表对应的ProgID else if (s == 'Excel.Sheet.12') { File.WriteAllBytes('Result.xlsx', Ole.NativeData); } //'Word.Document.12'是指03之后的Word对应的ProgID else if (s == 'Word.Document.12') { File.WriteAllBytes('Result.docx', Ole.NativeData); } } } } } } } }}
运行程序后,生成文档,读取结果如下图所示: