组合形状,表格到书签

概述

OLE,Object Linking and Embedding,即对象连接与嵌入。我们在设计程序时,OLE可以用来创建复合文档,把文字、声音、图像、表格、应用程序等类型的信息组合在一起,在Word中,我们可以通过OLE来实现以上要素信息的组合。下面的示例中将介绍如何通过C# 来操作Word中的OLE,示例内容包含以下要点:

  • 插入OLE到Word
  • 编辑Word中的OLE
  • 读取Word中的OLE

 

概要

书签的设置可以帮助我们快速的定位某段文字,使用起来很方便,也很节省时间。在前一篇文章“C# 如何添加/删除Word书签”中介绍了插入、删除书签的方法,本篇文章将对C# 操作Word书签的功能做进一步介绍。示例内容将包含以下要点:

  • 在现有书签位置插入图片
  • 在现有书签位置插入表格
  • 读取书签位置的文档内容
  • 替换现有书签位置内容

 

一、序言

在Office Word中,支持在Word文档中插入类型非常丰富的形状,包括线条、矩形、基本形状(诸如圆形、多边形、星形、括号、笑脸等等图形)、箭头形状、公式形状、流程图、旗帜图形、标注图形等等,我们在编程过程中,想要在Word中绘制不同类型的图形,可以通过类库来操作。控件Spire.Doc for .NET 6.0及以上版本开始支持Office Word中的所有图形,可以通过代码操作某个单一的形状,也可以通过将单一形状进行组合来获得想要的图形或形状效果,当然,也支持自己自定义图形,通过编程绘制也是可以的。下面将介绍向Word绘制形状和组合形状的方法,方法中的代码供参考。

PS:

  • Spire.Doc for .NET获取地址
  • 安装后,dll文件可在安装路径下的Bin文件夹中获取

Dll引用

图片 1

在前面的文章C# 如何插入、修改、删除Word批注一文中介绍了如何操作Word批注的一些方法,在本篇文章中继续介绍操作Word批注的方法。分以下三种情况来介绍:

  1. 插入图片到Word批注

  2. 读取Word批注

  3. 回复Word批注

使用工具

  •  Spire.Doc for .NET

:下载安装该类库,在编辑代码时,注意在程序中添加引用Spire.Doc.dll(dll文件可在安装路径下的Bin文件夹中获取)

图片 2

使用工具

  • Spire.Doc for .NET 6.1
  • Visual Studio

ps:下载安装该类库后,注意添加引用Spire.Doc.dl到项目程序,dll文件可在安装路径的Bin文件夹中获取。

图片 3

二、代码示例

所需工具

  • Free Spire.Doc for .NET 6.3(社区版)
  • Visual Studio

 PS:下载安装Free Spire.Doc 后,注意在你的程序中添加引用Spire.Doc.dll(dll文件可以在安装路径下的Bin文件夹中获取)

图片 4

 

示例代码(供参考)

示例代码(供参考)

测试文档如下:

图片 5

 

 

(一)绘制单一形状

步骤1:添加如下using指定

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

 

步骤2:创建示例,添加section、paragraph

//创建一个Document实例
Document doc = new Document();
//添加一个section paragraph
 Section sec = doc.AddSection();
 Paragraph para1 = sec.AddParagraph();

 

步骤3:在文档指定位置插入形状,并设置形状类型、大小、填充颜色、线条样式等

(这里简单列举几个形状的添加方法,方法比较简单,不做赘述,效果图中列举了部分形状样式,需要其他样式的形状可自行设置添加)

           //插入一个矩形
            ShapeObject shape1 = para1.AppendShape(50, 50, ShapeType.Rectangle);
            shape1.FillColor = Color.Blue;
            shape1.StrokeColor = Color.LightSkyBlue;
            shape1.HorizontalPosition = 20;
            shape1.VerticalPosition = 20;

            //插入一个圆形
            ShapeObject shape2 = para1.AppendShape(50, 50, ShapeType.Ellipse);
            shape2.FillColor = Color.Purple;
            shape2.StrokeColor = Color.LightPink;
            shape2.LineStyle = ShapeLineStyle.Single;
            shape2.StrokeWeight = 1;
            shape2.HorizontalPosition = 80;
            shape2.VerticalPosition = 20;

            //插入一个公式符号  
            ShapeObject shape3 = para1.AppendShape(50, 50, ShapeType.Plus);
            shape3.FillColor = Color.DarkCyan;
            shape3.StrokeColor = Color.LightGreen;
            shape3.LineStyle = ShapeLineStyle.Single;
            shape3.StrokeWeight = 1;
            shape3.HorizontalPosition = 140;
            shape3.VerticalPosition = 20;

            //插入一颗星形
            ShapeObject shape4 = para1.AppendShape(50, 50, ShapeType.Star);
            shape4.FillColor = Color.Red;
            shape4.StrokeColor = Color.Gold;
            shape4.LineStyle = ShapeLineStyle.Single;
            shape4.HorizontalPosition = 200;
            shape4.VerticalPosition = 20;

 

步骤4:保存文档

//保存并打开文档
doc.SaveToFile("InsertShapes.docx", FileFormat.Docx2010);
System.Diagnostics.Process.Start("InsertShapes.docx");

 

形状添加效果:

图片 6

全部代码:

图片 7图片 8

  1 using Spire.Doc;
  2 using Spire.Doc.Documents;
  3 using Spire.Doc.Fields;
  4 using System.Drawing;
  5 
  6 namespace AddShapes_Doc
  7 {
  8     class Program
  9     {
 10         static void Main(string[] args)
 11         {
 12             //创建一个Document实例
 13             Document doc = new Document();
 14 
 15             //添加一个section paragraph
 16             Section sec = doc.AddSection();
 17             Paragraph para1 = sec.AddParagraph();
 18 
 19             //插入一个矩形
 20             ShapeObject shape1 = para1.AppendShape(50, 50, ShapeType.Rectangle);
 21             shape1.FillColor = Color.Blue;
 22             shape1.StrokeColor = Color.LightSkyBlue;
 23             shape1.HorizontalPosition = 20;
 24             shape1.VerticalPosition = 20;
 25 
 26             //插入一个圆形
 27             ShapeObject shape2 = para1.AppendShape(50, 50, ShapeType.Ellipse);
 28             shape2.FillColor = Color.Purple;
 29             shape2.StrokeColor = Color.LightPink;
 30             shape2.LineStyle = ShapeLineStyle.Single;
 31             shape2.StrokeWeight = 1;
 32             shape2.HorizontalPosition = 80;
 33             shape2.VerticalPosition = 20;
 34 
 35             //插入一个公式符号  
 36             ShapeObject shape3 = para1.AppendShape(50, 50, ShapeType.Plus);
 37             shape3.FillColor = Color.DarkCyan;
 38             shape3.StrokeColor = Color.LightGreen;
 39             shape3.LineStyle = ShapeLineStyle.Single;
 40             shape3.StrokeWeight = 1;
 41             shape3.HorizontalPosition = 140;
 42             shape3.VerticalPosition = 20;
 43 
 44             //插入一颗星形
 45             ShapeObject shape4 = para1.AppendShape(50, 50, ShapeType.Star);
 46             shape4.FillColor = Color.Red;
 47             shape4.StrokeColor = Color.Gold;
 48             shape4.LineStyle = ShapeLineStyle.Single;
 49             shape4.HorizontalPosition = 200;
 50             shape4.VerticalPosition = 20;
 51 
 52             //插入一个立方体
 53             ShapeObject shape5 = para1.AppendShape(50, 50, ShapeType.Cube);
 54             shape5.FillColor = Color.OrangeRed;
 55             shape5.StrokeColor = Color.Orange;
 56             shape5.LineStyle = ShapeLineStyle.Single;
 57             shape5.HorizontalPosition = 260;
 58             shape5.VerticalPosition = 20;
 59 
 60             //插入一个圆柱体
 61             ShapeObject shape6 = para1.AppendShape(50, 50, ShapeType.Can);
 62             shape6.FillColor = Color.Goldenrod;
 63             shape6.StrokeColor = Color.Gold;
 64             shape6.LineStyle = ShapeLineStyle.Single;
 65             shape6.HorizontalPosition = 320;
 66             shape6.VerticalPosition = 20;
 67 
 68             //插入一个箭头
 69             ShapeObject shape7 = para1.AppendShape(50, 50, ShapeType.Arrow);
 70             shape7.FillColor = Color.Yellow;
 71             shape7.StrokeColor = Color.Yellow;
 72             shape7.LineStyle = ShapeLineStyle.Single;
 73             shape7.HorizontalPosition = 20;
 74             shape7.VerticalPosition = 80;
 75 
 76             //插入一个v形臂章图形
 77             ShapeObject shape8 = para1.AppendShape(50, 50, ShapeType.Chevron);
 78             shape8.FillColor = Color.YellowGreen;
 79             shape8.StrokeColor = Color.Yellow;
 80             shape8.LineStyle = ShapeLineStyle.Single;
 81             shape8.HorizontalPosition = 80;
 82             shape8.VerticalPosition = 80;
 83 
 84             //插入一个循环箭头图形
 85             ShapeObject shape9 = para1.AppendShape(50, 50, ShapeType.CircularArrow);
 86             shape9.FillColor = Color.Green;
 87             shape9.StrokeColor = Color.Yellow;
 88             shape9.LineStyle = ShapeLineStyle.Single;
 89             shape9.HorizontalPosition = 140;
 90             shape9.VerticalPosition = 80;
 91 
 92             //插入一个云图形
 93             ShapeObject shape10 = para1.AppendShape(50, 50, ShapeType.CloudCallout);
 94             shape10.FillColor = Color.LightSkyBlue;
 95             shape10.StrokeColor = Color.White;
 96             shape10.LineStyle = ShapeLineStyle.Single;
 97             shape10.HorizontalPosition = 200;
 98             shape10.VerticalPosition = 80;
 99 
100             //插入一个环形图
101             ShapeObject shape11 = para1.AppendShape(50, 50, ShapeType.Donut);
102             shape11.FillColor = Color.Pink;
103             shape11.StrokeColor = Color.White;
104             shape11.LineStyle = ShapeLineStyle.Single;
105             shape11.HorizontalPosition = 260;
106             shape11.VerticalPosition = 80;
107 
108             //插入一个波浪形状图
109             ShapeObject shape12 = para1.AppendShape(50, 50, ShapeType.DoubleWave);
110             shape12.FillColor = Color.Plum;
111             shape12.StrokeColor = Color.White;
112             shape12.LineStyle = ShapeLineStyle.Single;
113             shape12.HorizontalPosition = 320;
114             shape12.VerticalPosition = 80;
115 
116             //插入一个礼结状图形
117             ShapeObject shape13 = para1.AppendShape(50, 50, ShapeType.EllipseRibbon);
118             shape13.FillColor = Color.RosyBrown;
119             shape13.StrokeColor = Color.White;
120             shape13.LineStyle = ShapeLineStyle.Single;
121             shape13.HorizontalPosition = 20;
122             shape13.VerticalPosition = 140;
123 
124             //插入一个心形图
125             ShapeObject shape14 = para1.AppendShape(50, 50, ShapeType.Heart);
126             shape14.FillColor = Color.Red;
127             shape14.StrokeColor = Color.White;
128             shape14.LineStyle = ShapeLineStyle.Single;
129             shape14.HorizontalPosition = 80;
130             shape14.VerticalPosition = 140;
131 
132             //插入一个六边形图形
133             ShapeObject shape15 = para1.AppendShape(50, 50, ShapeType.Hexagon);
134             shape15.FillColor = Color.DarkCyan;
135             shape15.StrokeColor = Color.White;
136             shape15.LineStyle = ShapeLineStyle.Single;
137             shape15.HorizontalPosition = 140;
138             shape15.VerticalPosition = 140;
139 
140             //插入一个不规则图形
141             ShapeObject shape16 = para1.AppendShape(50, 50, ShapeType.IrregularSeal1);
142             shape16.FillColor = Color.DeepPink;
143             shape16.StrokeColor = Color.White;
144             shape16.LineStyle = ShapeLineStyle.Single;
145             shape16.HorizontalPosition = 200;
146             shape16.VerticalPosition = 140;
147 
148             //插入一个月亮形状
149             ShapeObject shape17 = para1.AppendShape(50, 50, ShapeType.Moon);
150             shape17.FillColor = Color.Violet;
151             shape17.StrokeColor = Color.White;
152             shape17.LineStyle = ShapeLineStyle.Single;
153             shape17.HorizontalPosition = 260;
154             shape17.VerticalPosition = 140;
155 
156             //插入一个"禁止"形状
157             ShapeObject shape18 = para1.AppendShape(50, 50, ShapeType.NoSmoking);
158             shape18.FillColor = Color.Yellow;
159             shape18.StrokeColor = Color.Goldenrod;
160             shape18.LineStyle = ShapeLineStyle.Single;
161             shape18.HorizontalPosition = 320;
162             shape18.VerticalPosition = 140;
163 
164             //保存并打开文档
165             doc.SaveToFile("InsertShapes.docx", FileFormat.Docx2010);
166             System.Diagnostics.Process.Start("InsertShapes.docx");
167         }
168     }
169 }

View Code

 

示例代码

【示例1】插入OLE到Word

步骤 1 :添加using指令

using Spire.Doc;
using Spire.Doc.Documents;
using 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 = new 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", picture, OleLinkType.Embed);

步骤 5 :保存文档

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

完成代码后,调试运行程序,生成文档。

测试结果,如下图所示:

图片 9

全部代码:

图片 10图片 11

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

View Code

 

 

【示例1】 在现有书签位置插入图片

步骤 1: 添加using指令

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

步骤 2 :主要代码段

//创建实例,加载文档
Document document = new Document();
document.LoadFromFile("test.docx");

//实例化BookmarksNavigator类,指定需要添加图片的书签“Bookmark1”
BookmarksNavigator bn = new BookmarksNavigator(document);
bn.MoveToBookmark("Bookmark1", true, true);

//添加段落,加载图片并插入到段落
Section section0 = document.AddSection();
Paragraph paragraph = section0.AddParagraph();
Image image = Image.FromFile("img.png");
DocPicture picture = paragraph.AppendPicture(image);
bn.InsertParagraph(paragraph);
document.Sections.Remove(section0);

//保存文档并打开
string output = "result.docx";
document.SaveToFile(output, FileFormat.Docx);
System.Diagnostics.Process.Start(output);

图片插入效果:

 图片 12

全部代码:

图片 13图片 14

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

namespace InsertImgToBookmark_Doc
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建实例,加载文档
            Document document = new Document();
            document.LoadFromFile("test.docx");

            //实例化BookmarksNavigator类,指定需要添加图片的书签“Bookmark1”
            BookmarksNavigator bn = new BookmarksNavigator(document);
            bn.MoveToBookmark("Bookmark1", true, true);

            //添加段落,加载图片并插入到段落
            Section section0 = document.AddSection();
            Paragraph paragraph = section0.AddParagraph();
            Image image = Image.FromFile("img.png");
            DocPicture picture = paragraph.AppendPicture(image);
            bn.InsertParagraph(paragraph);
            document.Sections.Remove(section0);

            //保存文档并打开
            string output = "result.docx";
            document.SaveToFile(output, FileFormat.Docx);
            System.Diagnostics.Process.Start(output);
        }
    }
}

View Code

 

(二)添加组合形状

步骤1:添加如下using指令

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

 

步骤2:创建文档,添加section、paragraph

Document doc = new Document();
Section sec = doc.AddSection();
Paragraph para1 = sec.AddParagraph();

 

步骤3:添加文字,并应用格式到文字

para1.AppendText("中日文化交流");
ParagraphStyle style1 = new ParagraphStyle(doc);
style1.Name = "titleStyle";
style1.CharacterFormat.Bold = true;
style1.CharacterFormat.FontName = "隶书";
style1.CharacterFormat.FontSize = 30f;
doc.Styles.Add(style1);
para1.ApplyStyle("titleStyle");
para1.Format.HorizontalAlignment = HorizontalAlignment.Center;

 

步骤4:实例化段落2,并创建一个形状组合,并设置大小

//实例化段落2
Paragraph para2 = sec.AddParagraph();
//创建一个形状组合并设置大小
ShapeGroup shapegr = para2.AppendShapeGroup(300, 300);

 

步骤5:绘制一个中国国旗,这里需要组合形状矩形和五角星形,并填充相应的颜色

 //添加一个矩形到形状组合
            shapegr.ChildObjects.Add(new ShapeObject(doc, ShapeType.Rectangle)
            {
                Width = 900,
                Height = 500,
                LineStyle = ShapeLineStyle.Single,
                FillColor = Color.Red,
                StrokeColor = Color.Red,                
                StrokeWeight = 1,
            });

            //添加第一个五角星到形状组合
            shapegr.ChildObjects.Add(new ShapeObject(doc, ShapeType.Star)
            {
                Width = 100,
                Height = 100,
                VerticalPosition = 90,
                HorizontalPosition = 90,
                LineStyle = ShapeLineStyle.Single,
                FillColor = Color.Yellow,
                StrokeColor = Color.Yellow,
                StrokeWeight = 1,
            });
            //添加第二个五角星到形状组合
            shapegr.ChildObjects.Add(new ShapeObject(doc, ShapeType.Star)
            {
                Width = 50,
                Height = 50,
                VerticalPosition = 40,
                HorizontalPosition = 210,
                LineStyle = ShapeLineStyle.Single,
                FillColor = Color.Yellow,
                StrokeColor = Color.Yellow,
                StrokeWeight = 1,
            });
            //添加第三个五角星到形状组合
            shapegr.ChildObjects.Add(new ShapeObject(doc, ShapeType.Star)
            {
                Width = 50,
                Height = 50,
                VerticalPosition = 80,
                HorizontalPosition = 280,
                LineStyle = ShapeLineStyle.Single,
                FillColor = Color.Yellow,
                StrokeColor = Color.Yellow,
                StrokeWeight = 1,
            });
            //添加第四个五角星到形状组合
            shapegr.ChildObjects.Add(new ShapeObject(doc, ShapeType.Star)
            {
                Width = 50,
                Height = 50,
                VerticalPosition = 160,
                HorizontalPosition = 280,
                LineStyle = ShapeLineStyle.Single,
                FillColor = Color.Yellow,
                StrokeColor = Color.Yellow,
                StrokeWeight = 1,
            });
            //添加第五个五角星到形状组合
            shapegr.ChildObjects.Add(new ShapeObject(doc, ShapeType.Star)
            {
                Width = 50,
                Height = 50,
                VerticalPosition = 220,
                HorizontalPosition = 210,
                LineStyle = ShapeLineStyle.Single,
                FillColor = Color.Yellow,
                StrokeColor = Color.Yellow,
                StrokeWeight = 1,
            });

 

步骤6:绘制一个日本国旗,需要组合形状矩形和圆形,并填充颜色

//绘制一个矩形并添加到形状组合
            shapegr.ChildObjects.Add(new ShapeObject(doc, ShapeType.Rectangle)
            {
                Width = 900,
                Height = 500,
                VerticalPosition = 700,
                HorizontalPosition = 600,
                LineStyle = ShapeLineStyle.Single,
                FillColor = Color.WhiteSmoke,
                StrokeColor = Color.WhiteSmoke,
                StrokeWeight = 1,
            });
            //绘制一个圆形并添加到形状组合
            shapegr.ChildObjects.Add(new ShapeObject(doc, ShapeType.Ellipse)
            {
                Width = 250,
                Height = 250,
                VerticalPosition = 800,
                HorizontalPosition = 900,
                LineStyle = ShapeLineStyle.Single,
                FillColor = Color.Red,
                StrokeColor = Color.Red,
                StrokeWeight = 1,
            });

 

步骤7:保存文档

//保存并打开文档
doc.SaveToFile("InsertShapegroups.docx", FileFormat.Docx2010);
System.Diagnostics.Process.Start("InsertShapegroups.docx");

 

添加效果:

图片 15

(此时的图形是组合后的效果,任意拖动图形不会出现各个形状分离、错位的情况。)

全部代码:

图片 16图片 17

  1 using Spire.Doc;
  2 using Spire.Doc.Documents;
  3 using Spire.Doc.Fields;
  4 using System.Drawing;
  5 
  6 namespace InsertShapesGroup_Doc
  7 {
  8     class Program
  9     {
 10         static void Main(string[] args)
 11         {
 12             //创建一个Document实例并添加section及paragraph
 13             Document doc = new Document();
 14             Section sec = doc.AddSection();
 15             Paragraph para1 = sec.AddParagraph();
 16             //添加文字,并应用格式到文字
 17             para1.AppendText("中日文化交流");
 18             ParagraphStyle style1 = new ParagraphStyle(doc);
 19             style1.Name = "titleStyle";
 20             style1.CharacterFormat.Bold = true;
 21             style1.CharacterFormat.FontName = "隶书";
 22             style1.CharacterFormat.FontSize = 30f;
 23             doc.Styles.Add(style1);
 24             para1.ApplyStyle("titleStyle");
 25             para1.Format.HorizontalAlignment = HorizontalAlignment.Center;
 26 
 27             //实例化段落2
 28             Paragraph para2 = sec.AddParagraph();
 29             //创建一个形状组合并设置大小
 30             ShapeGroup shapegr = para2.AppendShapeGroup(300, 300);
 31 
 32             //添加一个矩形到形状组合
 33             shapegr.ChildObjects.Add(new ShapeObject(doc, ShapeType.Rectangle)
 34             {
 35                 Width = 900,
 36                 Height = 500,
 37                 LineStyle = ShapeLineStyle.Single,
 38                 FillColor = Color.Red,
 39                 StrokeColor = Color.Red,                
 40                 StrokeWeight = 1,
 41             });
 42 
 43             //添加第一个五角星到形状组合
 44             shapegr.ChildObjects.Add(new ShapeObject(doc, ShapeType.Star)
 45             {
 46                 Width = 100,
 47                 Height = 100,
 48                 VerticalPosition = 90,
 49                 HorizontalPosition = 90,
 50                 LineStyle = ShapeLineStyle.Single,
 51                 FillColor = Color.Yellow,
 52                 StrokeColor = Color.Yellow,
 53                 StrokeWeight = 1,
 54             });
 55             //添加第二个五角星到形状组合
 56             shapegr.ChildObjects.Add(new ShapeObject(doc, ShapeType.Star)
 57             {
 58                 Width = 50,
 59                 Height = 50,
 60                 VerticalPosition = 40,
 61                 HorizontalPosition = 210,
 62                 LineStyle = ShapeLineStyle.Single,
 63                 FillColor = Color.Yellow,
 64                 StrokeColor = Color.Yellow,
 65                 StrokeWeight = 1,
 66             });
 67             //添加第三个五角星到形状组合
 68             shapegr.ChildObjects.Add(new ShapeObject(doc, ShapeType.Star)
 69             {
 70                 Width = 50,
 71                 Height = 50,
 72                 VerticalPosition = 80,
 73                 HorizontalPosition = 280,
 74                 LineStyle = ShapeLineStyle.Single,
 75                 FillColor = Color.Yellow,
 76                 StrokeColor = Color.Yellow,
 77                 StrokeWeight = 1,
 78             });
 79             //添加第四个五角星到形状组合
 80             shapegr.ChildObjects.Add(new ShapeObject(doc, ShapeType.Star)
 81             {
 82                 Width = 50,
 83                 Height = 50,
 84                 VerticalPosition = 160,
 85                 HorizontalPosition = 280,
 86                 LineStyle = ShapeLineStyle.Single,
 87                 FillColor = Color.Yellow,
 88                 StrokeColor = Color.Yellow,
 89                 StrokeWeight = 1,
 90             });
 91             //添加第五个五角星到形状组合
 92             shapegr.ChildObjects.Add(new ShapeObject(doc, ShapeType.Star)
 93             {
 94                 Width = 50,
 95                 Height = 50,
 96                 VerticalPosition = 220,
 97                 HorizontalPosition = 210,
 98                 LineStyle = ShapeLineStyle.Single,
 99                 FillColor = Color.Yellow,
100                 StrokeColor = Color.Yellow,
101                 StrokeWeight = 1,
102             });
103 
104             //绘制一个矩形并添加到形状组合
105             shapegr.ChildObjects.Add(new ShapeObject(doc, ShapeType.Rectangle)
106             {
107                 Width = 900,
108                 Height = 500,
109                 VerticalPosition = 700,
110                 HorizontalPosition = 600,
111                 LineStyle = ShapeLineStyle.Single,
112                 FillColor = Color.WhiteSmoke,
113                 StrokeColor = Color.Wheat,
114                 StrokeWeight = 1,
115             });
116             //绘制一个圆形并添加到形状组合
117             shapegr.ChildObjects.Add(new ShapeObject(doc, ShapeType.Ellipse)
118             {
119                 Width = 250,
120                 Height = 250,
121                 VerticalPosition = 800,
122                 HorizontalPosition = 900,
123                 LineStyle = ShapeLineStyle.Single,
124                 FillColor = Color.Red,
125                 StrokeColor = Color.Red,
126                 StrokeWeight = 1,
127             });    
128 
129             //保存并打开文档
130             doc.SaveToFile("InsertShapegroups.docx", FileFormat.Docx2010);
131             System.Diagnostics.Process.Start("InsertShapegroups.docx");
132         }
133     }
134 }

View Code

 

以上全部是关于Word中绘制图形形状的内容。如需转载,请注明出处!

感谢阅读!

1. 插入图片到Word批注

步骤 1:添加using指令

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

步骤 2:创建文档,加载测试文件

Document doc = new Document();
doc.LoadFromFile("testfile.docx");

步骤 3 :获取段落

Paragraph paragraph = doc.Sections[0].Paragraphs[2];

步骤 4 :添加文本、图片到批注

Comment comment = paragraph.AppendComment("探索黑科技,小米为发烧而生!");
comment.Format.Author = "Administor";  

DocPicture docPicture = new DocPicture(doc);
Image img = Image.FromFile("mi.png");
docPicture.LoadImage(img);
//插入图片到批注
comment.Body.AddParagraph().ChildObjects.Add(docPicture);

步骤 5 :保存文件

doc.SaveToFile("result.docx", FileFormat.Docx2013);
System.Diagnostics.Process.Start("result.docx");

 

测试结果:

图片 18

C#全部代码:

图片 19图片 20

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

namespace InsertImgToComment_Doc
{
    class Program
    {
        static void Main(string[] args)
        {
            //实例化Document类,加载文档
            Document doc = new Document();
            doc.LoadFromFile("testfile.docx");

            //获取需要添加批注的段落
            Paragraph paragraph = doc.Sections[0].Paragraphs[2];

            //添加文本批注内容、批注作者
            Comment comment = paragraph.AppendComment("探索黑科技,小米为发烧而生!");
            comment.Format.Author = "Administor";

            //实例化DocPicture类,加载图片
            DocPicture docPicture = new DocPicture(doc);
            Image img = Image.FromFile("mi.png");
            docPicture.LoadImage(img);
            //插入图片到批注
            comment.Body.AddParagraph().ChildObjects.Add(docPicture);

            //保存文件并打开文档
            doc.SaveToFile("result.docx", FileFormat.Docx2013);
            System.Diagnostics.Process.Start("result.docx");
        }
    }
}

View Code

VB.NET代码:

图片 21图片 22

Imports Spire.Doc
Imports Spire.Doc.Documents
Imports Spire.Doc.Fields
Imports System.Drawing

Namespace InsertImgToComment_Doc
    Class Program
        Private Shared Sub Main(ByVal args As String())
            Dim doc As Document = New Document()
            doc.LoadFromFile("testfile.docx")
            Dim paragraph As Paragraph = doc.Sections(0).Paragraphs(2)
            Dim comment As Comment = paragraph.AppendComment("探索黑科技,小米为发烧而生!")
            comment.Format.Author = "Administor"
            Dim docPicture As DocPicture = New DocPicture(doc)
            Dim img As Image = Image.FromFile("mi.png")
            docPicture.LoadImage(img)
            comment.Body.AddParagraph().ChildObjects.Add(docPicture)
            doc.SaveToFile("result.docx", FileFormat.Docx2013)
            System.Diagnostics.Process.Start("result.docx")
        End Sub
    End Class
End Namespace

View Code

 

【示例2】编辑Word中的OLE

 (这里以上文中生成的文档为测试文件)

步骤 1 :添加using指令

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

步骤 2 :加载文档

//实例化一个Document对象,加载含有OLE的Word文档
Document doc = new Document();
doc.LoadFromFile("test.docx");

步骤 3 :获取section中的所有OLE,根据需要来更改OLE的类型和链接对象

//获取第一个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对象,根据类型来进行更改操作
            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";
                }
                //如果是嵌入,更改数据即可
                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);
                }
            }
        }
    }
}

步骤 4 :保存文档

 //保存修改后的文档,并打开
 doc.SaveToFile("修改OLE.docx", Spire.Doc.FileFormat.Docx2010);
 System.Diagnostics.Process.Start("修改OLE.docx");

调试运行程序后,生成文档。打开文档时,生成的文档中原有的插入OLE的图片和链接的文档都已经更改了,如下所示:

 图片 23

全部代码:

图片 24图片 25

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对象,根据类型来进行更改操作
                        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";
                            }
                            //如果是嵌入,更改数据即可
                            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");
        }
    }
}

View Code

 【示例 2】在现有书签位置插入表格

步骤 1:添加using指令

using Spire.Doc;
using Spire.Doc.Documents;
using System.Data;

步骤 2 :创建文档,加载文件

Document doc = new Document();
doc.LoadFromFile("test.docx");

步骤 3 :创建表格

//创建Table对象
Table table = new Table(doc, true);

//创建模拟数据
DataTable dt = new DataTable();
dt.Columns.Add("PI", typeof(string));
dt.Columns.Add("Type", typeof(string));
dt.Columns.Add("Nov.", typeof(string));
dt.Columns.Add("YTD", typeof(string));                     
dt.Rows.Add(new string[] { "PI","Type", "Nov.", "YTD" });
dt.Rows.Add(new string[] { "1", "BAIC EC-Series", "15.719", "64.910" });
dt.Rows.Add(new string[] { "2", "Tesla Model S", "3.889", "46.951" });
dt.Rows.Add(new string[] { "3", "Nissan Leaf", "2.817", "46.423" });

//将数据填充至表格
table.ResetCells(dt.Rows.Count, dt.Columns.Count);
for (int i = 0; i < dt.Rows.Count; i  )
{
    for (int j = 0; j < dt.Columns.Count; j  )
    {
        table.Rows[i].Cells[j].AddParagraph().AppendText(dt.Rows[i][j].ToString());
    }
}

步骤 4 :插入表格到书签位置

//获取指定书签位置
BookmarksNavigator navigator = new BookmarksNavigator(doc);
navigator.MoveToBookmark("origin2");

//将表格添加至TextBodyPart
TextBodyPart part = navigator.GetBookmarkContent();
part.BodyItems.Add(table);
//替换原有书签内容
navigator.ReplaceBookmarkContent(part);

步骤 5 :保存文件

//保存并打开文件
doc.SaveToFile("output.docx", FileFormat.Docx2013);
System.Diagnostics.Process.Start("output.docx");

 

 表格插入效果:

图片 26

全部代码:

图片 27图片 28

using Spire.Doc;
using Spire.Doc.Documents;
using System.Data;

namespace InsertTableToBookmark_Doc
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建文档,加载文件
            Document doc = new Document();
            doc.LoadFromFile("test.docx");

            //创建Table对象
            Table table = new Table(doc, true);

            //创建模拟数据
            DataTable dt = new DataTable();
            dt.Columns.Add("PI", typeof(string));
            dt.Columns.Add("Type", typeof(string));
            dt.Columns.Add("Nov.", typeof(string));
            dt.Columns.Add("YTD", typeof(string));                     
            dt.Rows.Add(new string[] { "PI","Type", "Nov.", "YTD" });
            dt.Rows.Add(new string[] { "1", "BAIC EC-Series", "15.719", "64.910" });
            dt.Rows.Add(new string[] { "2", "Tesla Model S", "3.889", "46.951" });
            dt.Rows.Add(new string[] { "3", "Nissan Leaf", "2.817", "46.423" });

            //将数据填充至表格
            table.ResetCells(dt.Rows.Count, dt.Columns.Count);
            for (int i = 0; i < dt.Rows.Count; i  )
            {
                for (int j = 0; j < dt.Columns.Count; j  )
                {
                    table.Rows[i].Cells[j].AddParagraph().AppendText(dt.Rows[i][j].ToString());
                }
            }

            //获取指定书签位置
            BookmarksNavigator navigator = new BookmarksNavigator(doc);
            navigator.MoveToBookmark("origin2");

            //将表格添加至TextBodyPart
            TextBodyPart part = navigator.GetBookmarkContent();
            part.BodyItems.Add(table);

            //替换书签内容
            navigator.ReplaceBookmarkContent(part);

            //保存并打开文件
            doc.SaveToFile("output.docx", FileFormat.Docx2013);
            System.Diagnostics.Process.Start("output.docx");
        }
    }
}

View Code

 

2.读取Word批注

步骤 1 :添加using指令

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

步骤 2 :创建实例,加载文档

Document doc = new Document();
doc.LoadFromFile("test.docx");

步骤 3 :将批注内容写入Txt文档

//实例化StringBuilder类
StringBuilder SB = new StringBuilder();
//遍历所有word批注,将批注内容写入Txt文档
foreach (Comment comment in doc.Comments)
{
    foreach (Paragraph p in comment.Body.Paragraphs)
    {
        SB.AppendLine(p.Text);
    }
}
File.WriteAllText("CommentExtraction.txt", SB.ToString());
System.Diagnostics.Process.Start("CommentExtraction.txt");

图片 29

C# 全部代码:

图片 30图片 31

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

namespace ExtractComments
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建实例,加载文档
            Document doc = new Document();
            doc.LoadFromFile("test.docx");

            //实例化StringBuilder类
            StringBuilder SB = new StringBuilder();
            //遍历所有word批注,将批注内容写入Txt文档
            foreach (Comment comment in doc.Comments)
            {
                foreach (Paragraph p in comment.Body.Paragraphs)
                {
                    SB.AppendLine(p.Text);
                }
            }
            File.WriteAllText("CommentExtraction.txt", SB.ToString());
            System.Diagnostics.Process.Start("CommentExtraction.txt");
        }
    }
}

View Code

VB.NET 代码

图片 32图片 33

Imports System.Text
Imports System.IO
Imports Spire.Doc
Imports Spire.Doc.Documents
Imports Spire.Doc.Fields

Namespace ExtractComments
    Class Program
        Private Shared Sub Main(ByVal args As String())
            Dim doc As Document = New Document()
            doc.LoadFromFile("test.docx")
            Dim SB As StringBuilder = New StringBuilder()

            For Each comment As Comment In doc.Comments

                For Each p As Paragraph In comment.Body.Paragraphs
                    SB.AppendLine(p.Text)
                Next
            Next

            File.WriteAllText("CommentExtraction.txt", SB.ToString())
            System.Diagnostics.Process.Start("CommentExtraction.txt")
        End Sub
    End Class
End Namespace

View Code

 

【示例3】读取Word中的OLE

 步骤 1 :添加using指令

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

步骤 2 :加载文件

//实例化一个Document对象,加载一个有OLE对象的文档
Document doc = new Document();          
doc.LoadFromFile(@"test.docx");

步骤 3 :遍历section,读取OLE

//遍历文档所有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);
                                }
                            }
                        }
                    }
                }
            }

调试运行程序,生成文档,如下:

 图片 34

全部代码:

图片 35图片 36

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

View Code

以上是本次关于C# 操作word中的OLE的全部内容。示例方法供参考。

 

本文完。

如需转载,请注明出处!

【示例3】读取书签位置的内容

步骤 1 :添加using指令

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

步骤 2 :获取书签位置的内容

//初始化BookmarkNavigator类对象
BookmarksNavigator navigator = new BookmarksNavigator(doc);
//定位到指定书签位置,获取书签位置的文档内容
navigator.MoveToBookmark("bookmark1");
TextBodyPart textBodyPart = navigator.GetBookmarkContent();

步骤 3 :读取书签内容

//遍历书签内容中的子项目,并将文本信息提取至string类型变量中
string text = null;
foreach (var item in textBodyPart.BodyItems)
{
    if (item is Paragraph)
    {
        foreach (var childObject in (item as Paragraph).ChildObjects)
        {
            if (childObject is TextRange)
            {
                text  = (childObject as TextRange).Text;
            }
        }
    }
}
//控制台输出文本
Console.WriteLine(text);
Console.ReadLine();

 

 读取结果:

图片 37

全部代码:

图片 38图片 39

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

namespace GetTextOfBookmark_Doc
{
    class Program
    {
        static void Main(string[] args)
        {
            //实例化Document类,加载测试文档
            Document doc = new Document();
            doc.LoadFromFile("test.docx");

            //初始化BookmarkNavigator类对象
            BookmarksNavigator navigator = new BookmarksNavigator(doc);
            //定位到指定书签位置,获取书签位置的文档内容
            navigator.MoveToBookmark("bookmark1");
            TextBodyPart textBodyPart = navigator.GetBookmarkContent();

            //遍历书签内容中的子项目,并将文本信息提取至string类型变量中
            string text = null;
            foreach (var item in textBodyPart.BodyItems)
            {
                if (item is Paragraph)
                {
                    foreach (var childObject in (item as Paragraph).ChildObjects)
                    {
                        if (childObject is TextRange)
                        {
                            text  = (childObject as TextRange).Text;
                        }
                    }
                }
            }
            //控制台输出文本
            Console.WriteLine(text);
            Console.ReadLine();
        }
    }
}

View Code

 

3. 回复Word批注内容

步骤 1 :添加using指令 

using Spire.Doc;
using Spire.Doc.Fields;

步骤 2 :创建实例

Document doc = new Document();
doc.LoadFromFile("test.docx");

步骤 3 :获取批注

Comment comment = doc.Comments[0];

步骤 4 :回复批注

Comment replyComment = new Comment(doc);
replyComment.Format.Author = "Adam";
replyComment.Body.AddParagraph().AppendText("这条批注内容请再丰富一下,内容有些单调");
comment.ReplyToComment(replyComment);

步骤 5 :保存文件

doc.SaveToFile("ReplyToComment.docx", FileFormat.Docx2013);
System.Diagnostics.Process.Start("ReplyToComment.docx");

 

测试结果:

图片 40

C# 全部代码:

图片 41图片 42

using Spire.Doc;
using Spire.Doc.Fields;

namespace ReplyComment_Doc
{
    class Program
    {
        static void Main(string[] args)
        {
            //实例化Document类,加载文件
            Document doc = new Document();
            doc.LoadFromFile("test.docx");

            //获取第一个批注
            Comment comment = doc.Comments[0];

            //实例化Comment类,添加批注回复作者以及回复内容
            Comment replyComment = new Comment(doc);
            replyComment.Format.Author = "Adam";
            replyComment.Body.AddParagraph().AppendText("这条批注内容请再丰富一下,内容有些单调");
            comment.ReplyToComment(replyComment);

            //保存文件并打开
            doc.SaveToFile("ReplyToComment.docx", FileFormat.Docx2013);
            System.Diagnostics.Process.Start("ReplyToComment.docx");
        }
    }
}

View Code

VB.NET 代码:

图片 43图片 44

Imports Spire.Doc
Imports Spire.Doc.Fields

Namespace ReplyComment_Doc
    Class Program
        Private Shared Sub Main(ByVal args As String())
            Dim doc As Document = New Document()
            doc.LoadFromFile("test.docx")
            Dim comment As Comment = doc.Comments(0)
            Dim replyComment As Comment = New Comment(doc)
            replyComment.Format.Author = "Adam"
            replyComment.Body.AddParagraph().AppendText("这条批注内容请再丰富一下,内容有些单调")
            comment.ReplyToComment(replyComment)
            doc.SaveToFile("ReplyToComment.docx", FileFormat.Docx2013)
            System.Diagnostics.Process.Start("ReplyToComment.docx")
        End Sub
    End Class
End Namespace

View Code

以上为本次关于操作Word批注的全部内容。

(本文完)

如需转载,请注明出处。

【示例4】替换现有书签内容

步骤 1 :添加using指令

using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;

步骤 2 :加载文档

Document document = new Document();
document.LoadFromFile("test.docx");

步骤 3 :添加段落及文字

Section sec = document.AddSection();//添加section
sec.AddParagraph().AppendText("Welcome Back, n My Friend!"); //添加段落到section,并添加字符串内容

步骤 4 :获取段落

//获取段落内容 
ParagraphBase firstReplacementParagraph = sec.Paragraphs[0].Items.FirstItem as ParagraphBase;
ParagraphBase lastReplacementParagraph = sec.Paragraphs[sec.Paragraphs.Count - 1].Items.LastItem as ParagraphBase;
//实例化类TextBodySelection和TextBodyPart
TextBodySelection selection = new TextBodySelection(firstReplacementParagraph, lastReplacementParagraph);
TextBodyPart part = new TextBodyPart(selection);

步骤 5 :替换书签内容

BookmarksNavigator bookmarkNavigator = new BookmarksNavigator(document);//实例化BookmarksNavigator类 
bookmarkNavigator.MoveToBookmark("bookmark1", true, true);//定位到书签“bookmark1”所在段落的位置
bookmarkNavigator.DeleteBookmarkContent(true);//删除原有书签位置的内容
bookmarkNavigator.ReplaceBookmarkContent(part, true, true);//用新添加段落的内容替换掉原书签的内容并保留格式
document.Sections.Remove(sec); //移除section

步骤 6 :保存文档

//保存文档并打开
document.SaveToFile("替换书签.docx");
System.Diagnostics.Process.Start("替换书签.docx");

 

替换效果:

图片 45

全部代码:

图片 46图片 47

using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;

namespace EditOrReplaceBookmark_Doc
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建Document类实例,加载文档 
            Document document = new Document();
            document.LoadFromFile("test.docx");

            Section sec = document.AddSection();//添加section
            sec.AddParagraph().AppendText("Welcome Back, n My Friend!"); //添加段落到section,并添加字符串内容

            //获取段落内容 
            ParagraphBase firstReplacementParagraph = sec.Paragraphs[0].Items.FirstItem as ParagraphBase;
            ParagraphBase lastReplacementParagraph = sec.Paragraphs[sec.Paragraphs.Count - 1].Items.LastItem as ParagraphBase;
            //实例化类TextBodySelection和TextBodyPart
            TextBodySelection selection = new TextBodySelection(firstReplacementParagraph, lastReplacementParagraph);
            TextBodyPart part = new TextBodyPart(selection);

            BookmarksNavigator bookmarkNavigator = new BookmarksNavigator(document);//实例化BookmarksNavigator类 
            bookmarkNavigator.MoveToBookmark("bookmark1", true, true);//定位到书签“bookmark1”所在段落的位置
            bookmarkNavigator.DeleteBookmarkContent(true);//删除原有书签位置的内容
            bookmarkNavigator.ReplaceBookmarkContent(part, true, true);//用新添加段落的内容替换掉原书签的内容并保留格式            
            document.Sections.Remove(sec); //移除section

            //保存文档并打开
            document.SaveToFile("替换书签.docx");
            System.Diagnostics.Process.Start("替换书签.docx");
        }
    }
}

View Code

 

以上是本次关于C# 操作Word书签功能的补充介绍,如需转载,请注明出处。

(本文完)

 

本文由星彩网app下载发布于计算机编程,转载请注明出处:组合形状,表格到书签

TAG标签: 星彩网app下载
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。