olE,Object linking and Embedding,即对象连接与嵌入。我们在设计程序时,olE可以用来创建复合文档,把文字、声音、图像、表格、应用程序等类型的信息组合在一起,在Word中,我们可以通过olE来实现以上要素信息的组合。下面的示例中将介绍如何通过C# 来 *** 作Word中的olE,示例内容包含以下要点:
插入olE到Word编辑Word中的olE读取Word中的olE使用工具 Spire.Doc for .NET
注:下载安装该类库,在编辑代码时,注意在程序中添加引用Spire.Doc.dll(dll文件可在安装路径下的Bin文件夹中获取)
示例代码(供参考)【示例1】插入olE到Word步骤 1 :添加using指令
using Spire.Doc; Spire.Doc.documents; Spire.Doc.FIElds;using System.Drawing;
步骤 2 :创建文档
//实例化一个document类对象document doc = new document();向文档中添加一个Section对象,并添加段落Section sec = doc.AddSection();Paragraph p = sec.AddParagraph();
步骤 3 :加载图片
实例化一个DocPicture类对象,加载图片DocPicture picture = DocPicture(doc);Image image = Image.Fromfile(@"chart1.png");picture.LoadImage(image);
步骤 4 :插入olE
在文档中插入一个工作表,olelinkType 枚举值控制该olE是链接还是嵌入DocoleObject obj = p.AppendoleObject(testfile.xlsx,picture,olelinkType.link);DocoleObject obj = p.AppendoleObject(@"testfile.xlsx",olelinkType.Embed);
步骤 5 :保存文档
保存并打开文档doc.Savetofile("添加olE.docx);System.Diagnostics.Process.Start(");
完成代码后,调试运行程序,生成文档。
测试结果,如下图所示:
全部代码:
System.Drawing;namespace InsertolE_Doc{ class Program { static voID Main(string[] args) { 实例化一个document类对象 document doc = document(); doc.AddSection(); Paragraph p = sec.AddParagraph(); DocPicture(doc); Image image = Image.Fromfile(); picture.LoadImage(image); 保存并打开文档 doc.Savetofile(); System.Diagnostics.Process.Start(); } }}VIEw Code
【示例2】编辑Word中的olE
(这里以上文中生成的文档为测试文件)
步骤 1 :添加using指令
System.Drawing;using System.IO;
步骤 2 :加载文档
实例化一个document对象,加载含有olE的Word文档document doc = document();doc.LoadFromfile(test.docx");
步骤 3 :获取section中的所有olE,根据需要来更改olE的类型和链接对象
获取第一个SectionSection sec = doc.Sections[0];遍历这个Section中的所有子元素,找到段落下的olE对象foreach (documentObject obj in sec.Body.Childobjects){ if (obj is Paragraph) { Paragraph par = obj as Paragraph; foreach (documentObject paraObj par.Childobjects) { 找到olE对象,根据类型来进行更改 *** 作 if (paraObj.documentObjectType == documentObjectType.oleObject) { DocoleObject ole = paraObj DocoleObject; 如果是链接, 修改对象的链接路径 if (ole.linkType == olelinkType.link) { 同时还要手动去更改olE的图片 DocPicture pic = ole.olePicture; pic.LoadImage(Image.Fromfile(img.png)); ole.linkPath = sample.docx; } 如果是嵌入,更改数据即可 byte[] bys = file.ReadAllBytes(); olelinkType.Embed) { DocPicture pic = DocPicture(doc); pic.LoadImage(Image.Fromfile()); ole.ObjectType = Word.document.12; ole.SetolePicture(pic); ole.SetNativeData(bys); } } } }}
步骤 4 :保存文档
保存修改后的文档,并打开 doc.Savetofile(修改olE.docx");
调试运行程序后,生成文档。打开文档时,生成的文档中原有的插入olE的图片和链接的文档都已经更改了,如下所示:
全部代码:
System.IO; EditolE_Doc{ document(); doc.LoadFromfile(); 获取第一个Section Section sec = doc.Sections[]; 遍历这个Section中的所有子元素,找到段落下的olE对象 sec.Body.Childobjects) { Paragraph) { Paragraph par = obj Paragraph; par.Childobjects) { 找到olE对象,根据类型来进行更改 *** 作 documentObjectType.oleObject) { DocoleObject ole = paraObj DocoleObject; 如果是链接, 修改对象的链接路径 olelinkType.link) { 同时还要手动去更改olE的图片 DocPicture pic = ole.olePicture; pic.LoadImage(Image.Fromfile()); ole.linkPath = ; } 如果是嵌入,更改数据即可 ); olelinkType.Embed) { DocPicture pic = DocPicture(doc); pic.LoadImage(Image.Fromfile()); ole.ObjectType = ; ole.SetolePicture(pic); ole.SetNativeData(bys); } } } } } 保存修改后的文档,并打开 doc.Savetofile(); } }}VIEw Code【示例3】读取Word中的olE
步骤 1 :添加using指令
using System.IO;
步骤 2 :加载文件
实例化一个document对象,加载一个有olE对象的文档document doc = document(); doc.LoadFromfile(");
步骤 3 :遍历section,读取olE
遍历文档所有Section foreach (Section sec doc.Sections) { 遍历Section下面所有的子元素 sec.Body.Childobjects) { Paragraph) { Paragraph par = obj Paragraph; 遍历这个section下面的段落 foreach (documentObject o par.Childobjects) { 找到olE对象,并根据类型提取 if (o.documentObjectType == documentObjectType.oleObject) { DocoleObject ole = o 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"Excel.Sheet.12"是指 Excel03之后的工作表对应的ProgID else Excel.Sheet.12Result.xlsx"Word.document.12"是指03之后的Word对应的ProgID Result.docx全部代码:
ReadolE_Doc{ 实例化一个document对象,加载一个有olE对象的文档 document doc = document(); doc.LoadFromfile(VIEw Code以上是本次关于C# *** 作word中的olE的全部内容。示例方法供参考。
本文完。
如需转载,请注明出处!
总结以上是内存溢出为你收集整理的C# *** 作Word 中的OLE——插入、编辑、读取 OLE全部内容,希望文章能够帮你解决C# *** 作Word 中的OLE——插入、编辑、读取 OLE所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)