成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

C#操作Word中的OLE——插入、編輯、讀取OLE

概述

OLE,Object Linking and Embedding,即對象連接與嵌入。我們在設(shè)計程序時,OLE可以用來創(chuàng)建復(fù)合文檔,把文字、聲音、圖像、表格、應(yīng)用程序等類型的信息組合在一起,在Word中,我們可以通過OLE來實現(xiàn)以上要素信息的組合。下面的示例中將介紹如何通過C# 來操作Word中的OLE,示例內(nèi)容包含以下要點:

創(chuàng)新互聯(lián)公司專注于浠水企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,成都商城網(wǎng)站開發(fā)。浠水網(wǎng)站建設(shè)公司,為浠水等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站制作,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

  • 插入OLE到Word
  • 編輯Word中的OLE
  • 讀取Word中的OLE

使用工具

  • Spire.Doc for .NET
    注:下載安裝該類庫,在編輯代碼時,注意在程序中添加引用Spire.Doc.dll(dll文件可在安裝路徑下的Bin文件夾中獲?。?br/>C# 操作Word 中的OLE——插入、編輯、讀取 OLE

示例代碼(供參考)

【示例1】插入OLE到Word

C#

using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System.Drawing;

namespace InsertOLE_Doc
{
    class Program
    {
        static void Main(string[] args)
        {
            //實例化一個Document類對象
            Document doc = new Document();
            //向文檔中添加一個Section對象,并添加段落
            Section sec = doc.AddSection();
            Paragraph p = sec.AddParagraph();

            //實例化一個DocPicture類對象,加載圖片
            DocPicture picture = new DocPicture(doc);
            Image image = Image.FromFile(@"chart1.png");
            picture.LoadImage(image);

            //在文檔中插入一個工作表, OleLinkType 枚舉值控制該OLE是鏈接還是嵌入         
            DocOleObject obj = p.AppendOleObject(@"testfile.xlsx", picture, OleLinkType.Link);
            //DocOleObject obj = p.AppendOleObject(@"testfile.xlsx", picture, OleLinkType.Embed);

            //保存并打開文檔
            doc.SaveToFile("添加OLE.docx");
            System.Diagnostics.Process.Start("添加OLE.docx");
        }
    }
}

完成代碼后,調(diào)試運行程序,生成文檔。
測試結(jié)果,如下圖所示:
C# 操作Word 中的OLE——插入、編輯、讀取 OLE

【示例2】編輯Word中的OLE

(這里以上文中生成的文檔為測試文件)
C#

using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System.Drawing;
using System.IO;

namespace EditOLE_Doc
{
    class Program
    {
        static void Main(string[] args)
        {
            //實例化一個Document對象,加載含有OLE的Word文檔
            Document doc = new Document();
            doc.LoadFromFile("test.docx");

            //獲取第一個Section
            Section 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 in par.ChildObjects)
                    {
                        //找到OLE對象,根據(jù)類型來進(jìn)行更改操作
                        if (paraObj.DocumentObjectType == DocumentObjectType.OleObject)
                        {
                            DocOleObject Ole = paraObj as DocOleObject;
                            //如果是鏈接, 修改對象的鏈接路徑
                            if (Ole.LinkType == OleLinkType.Link)
                            {
                                //同時還要手動去更改OLE的圖片
                                DocPicture pic = Ole.OlePicture;
                                pic.LoadImage(Image.FromFile("Img.png"));
                                Ole.LinkPath = @"sample.docx";
                            }
                            //如果是嵌入,更改數(shù)據(jù)即可
                            byte[] bys = File.ReadAllBytes(@"sample.docx");
                            if (Ole.LinkType == OleLinkType.Embed)
                            {
                                DocPicture pic = new DocPicture(doc);
                                pic.LoadImage(Image.FromFile(@"Img.png"));
                                Ole.ObjectType = "Word.Document.12";
                                Ole.SetOlePicture(pic);
                                Ole.SetNativeData(bys);
                            }
                        }
                    }
                }
            }
            //保存修改后的文檔,并打開
            doc.SaveToFile("修改OLE.docx", Spire.Doc.FileFormat.Docx2010);
            System.Diagnostics.Process.Start("修改OLE.docx");
        }
    }
}

調(diào)試運行程序后,生成文檔。打開文檔時,生成的文檔中原有的插入OLE的圖片和鏈接的文檔都已經(jīng)更改了,如下所示:
C# 操作Word 中的OLE——插入、編輯、讀取 OLE

【示例3】讀取Word中的OLE

C#

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對象,并根據(jù)類型提取
                            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對象對應(yīng)的ProgID
                                if (s == "AcroExch.Document.11")
                                {
                                    File.WriteAllBytes("Result.pdf", Ole.NativeData);
                                }
                                //"Excel.Sheet.12"是指 Excel03之后的工作表對應(yīng)的ProgID
                                else if (s == "Excel.Sheet.12")
                                {
                                    File.WriteAllBytes("Result.xlsx", Ole.NativeData);
                                }
                                //"Word.Document.12"是指03之后的Word對應(yīng)的ProgID
                                else if (s == "Word.Document.12")
                                {
                                    File.WriteAllBytes("Result.docx", Ole.NativeData);
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

調(diào)試運行程序,生成文檔,如下:
C# 操作Word 中的OLE——插入、編輯、讀取 OLE

以上是本次關(guān)于C# 操作word中的OLE的全部內(nèi)容。示例方法供參考。

本文完。
如需轉(zhuǎn)載,請注明出處!

網(wǎng)站欄目:C#操作Word中的OLE——插入、編輯、讀取OLE
URL地址:http://jinyejixie.com/article42/ppephc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計、面包屑導(dǎo)航、外貿(mào)建站企業(yè)建站、手機(jī)網(wǎng)站建設(shè)建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)
蒲江县| 伊金霍洛旗| 汨罗市| 新野县| 疏勒县| 万全县| 商河县| 石狮市| 泸定县| 正安县| 墨竹工卡县| 乳源| 武清区| 临汾市| 正安县| 钟祥市| 镶黄旗| 左贡县| 宁远县| 申扎县| 丽水市| 吴堡县| 那坡县| 房山区| 巴东县| 上林县| 类乌齐县| 克山县| 丹棱县| 彝良县| 申扎县| 贡觉县| 琼中| 财经| 汤原县| 玉环县| 四川省| 醴陵市| 苏尼特右旗| 犍为县| 苍南县|