C# *** 作Word 中的OLE——插入、编辑、读取 OLE

C#  *** 作Word 中的OLE——插入、编辑、读取 OLE,第1张

概述概述 OLE,Object Linking and Embedding,即对象连接与嵌入。我们在设计程序时,OLE可以用来创建复合文档,把文字、声音、图像、表格、应用程序等类型的信息组合在一起,在Wo 概述

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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1213398.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存