一、Word对象模型 (.Net Perspective)

五大对象
Application :代表Microsoft Word应用程序本身是Document和Selection的基类。通过Application的属性和方法,我们可以控制Word的大环境。

Document :代表一个Word文档,当你新建一个Word文档或者打开一个已有的Word文档,你将创建一个Document对象,该对象被加入到WordsDocuments Collection中。拥有焦点的Document称为ActiveDocument,可以通过Application对象的ActiveDocument属性获得当前文档对象

Selection :代表当前选中的区域(高亮),没有选中区域时代表光标点。它通常是高亮显示的(例如,你要改变一段文字的字体,你首先得选中这段文字,那么选中的这块区域就是当前文档的Selection对象所包含的区域)

Bookmarks :书签
  1>书签一般有名字
  2>Saved with the document,且文档关闭了之后书签继续存在
  3>书签通常是隐藏的,但也可以通过代码设置其为可见

Range :代表一块区域,与Selection类似,不过一般不可见
  1>包含一个起始位置和一个结束位置
  2>它可以包含光标点,一段文本或者整个文档
  3>它包含空格,tab以及paragraph marks
   4>它可以是当前选中的区域,当然也可以不是当前选中区域
  5>它被动态创建
  6>当你在一个Range的末尾插入文本,这将扩展该Range

word文档对象的结构图(关于对象的详细使用,可以参考msdn api):

二、实例使用

1、创建word

创建Word 文档所使用的主要方法是通过微软公司提供的Microsoft Word X Object Library,其中X 为版本号。Word2010对应14.0, Word 2007 对应12.0,Word 2003 对应11.0。通过在项目中添加该组件,即可使用微软公司提供的方法创建相应版本的Word 文档。

在实例中我将所要生成word的格式设置为2003版本,如下: object format = MSWord.WdSaveFormat.wdFormatDocument;
新建一个webForm项目文件, Com组件中添加 Microsoft Word 12.0 Object Library,引用面板中多出Microsoft.Office.Core、Microsoft.Office.Interop.Word两个引用。
在类文件中添加应用如下:
using MSWord = Microsoft.Office.Interop.Word;
using System.IO;
using System.Reflection;
using Microsoft.Office.Interop.Word;
前几篇博客已经讲述了word创建、格式设置、文本添加、图片添加、表格添加展示部分代码,下面就不在展示了,下面主要说一下书签的使用。

2.书签使用:
使用步骤:

1:建立word模板,并且在word中插入要用到的书签

2:c#方法中新建word操作类,并且打开硬盘中建立好的word模板
3:找到word模板中的书签,并在书签处写入要插入的数据

代码实现:

public void AddDocModel(){killWinWordProcess();wordApp = new ApplicationClass();wordApp.DisplayAlerts = WdAlertLevel.wdAlertsNone;wordApp.Visible = false;object missing = System.Reflection.Missing.Value;object templateName = Application.StartupPath + @"\Report";//最终的word文档需要写入的位置object ModelName = Application.StartupPath + @"\Report\ReportModel_Stand.doc";//word模板的位置object count = 1;object WdLine = Microsoft.Office.Interop.Word.WdUnits.wdLine;//换一行;wordDoc = wordApp.Documents.Open(ref ModelName, ref missing, ref missing,ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,ref missing);//打开word模板//在书签处插入文字object oStart = "PatName";//word中的书签名 Range range = wordDoc.Bookmarks.get_Item(ref oStart).Range;//表格插入位置 range.Text = "这里是您要输入的内容";//在书签处插入文字内容//在书签处插入表格oStart = "PatInfo";//word中的书签名 range = wordDoc.Bookmarks.get_Item(ref oStart).Range;//表格插入位置      MSWord.Table tab_Pat = wordDoc.Tables.Add(range, 2, 4, ref missing, ref missing);//开辟一个2行4列的表格tab_Pat.Range.Font.Size = 10.5F;tab_Pat.Range.Font.Bold = 0;tab_Pat.Columns[1].Width = 50;tab_Pat.Columns[2].Width = 65;tab_Pat.Columns[3].Width = 40;tab_Pat.Columns[4].Width = 40;tab_Pat.Cell(1, 1).Range.Text = "病历号";tab_Pat.Cell(1, 2).Range.Text = "PatientNO";tab_Pat.Cell(1, 3).Range.Text = "身高";tab_Pat.Cell(1, 4).Range.Text = "Height";tab_Pat.Cell(2, 1).Range.Text = "姓名";tab_Pat.Cell(2, 2).Range.Text ="PatientName";tab_Pat.Cell(2, 3).Range.Text = "体重";tab_Pat.Cell(2, 4).Range.Text = "Weight";//保存wordobject format = WdSaveFormat.wdFormatDocument;//保存格式 wordDoc.SaveAs(ref templateName, ref format, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);//关闭wordDoc,wordApp对象              object SaveChanges = WdSaveOptions.wdSaveChanges;object OriginalFormat = WdOriginalFormat.wdOriginalDocumentFormat;object RouteDocument = false;wordDoc.Close(ref SaveChanges, ref OriginalFormat, ref RouteDocument);wordApp.Quit(ref SaveChanges, ref OriginalFormat, ref RouteDocument);}// 杀掉winword.exe进程          public void killWinWordProcess(){System.Diagnostics.Process[] processes = System.Diagnostics.Process.GetProcessesByName("WINWORD"); foreach (System.Diagnostics.Process process in processes) {bool b = process.MainWindowTitle == ""; if (process.MainWindowTitle == "") {process.Kill(); } }}word书签使用

小结:这几篇博客整理下来,对于Word在项目中的使用,有了一个大体的理解, 如果在此解决此类问题 就会变得相对简单 容易很多。

——部分内容来自网络

c# 操作Word总结(四)——书签使用相关推荐

  1. 操作word文档书签

    操作word文档书签在指定位置添加信息 我们经常会遇到在word中指定的位置添加内容,在这里我们可以通过操作word书签的方式在word文档中指定的添加信息. 1.首先我们需要添加MSWORD.OLB ...

  2. C#操作Word之在书签处写入特殊字符

    C#读写word想实现下面的效果: 为了控制样式,最简单的方式就是使用书签: (1)将打钩的方框改为不打钩的方框, (2)给每个方框插入书签,不同的土地利用类型有不同的编码,旱地前的方框就可以插入书签 ...

  3. 随笔之:VC操作Word系列(四)

    上一回讲了如何合并单元格,这次来说说如何填充单元格以及如何对合并后的单元格的内容让他居中显示这样能够看得舒服一点:).代码如下所示: void CWordTestDlg::TestWord4() { ...

  4. VBA操作WORD(四):获知关键字所在段落及相关信息

    代码如下: Sub 关键字所在的段落()With Selection.HomeKey unit:=wdStory, Extend:=wdMoveIf .Find.Execute(FindText:=& ...

  5. C#操作Word文档

    1.c#操作word 在指定书签插入文字或者图片 using Word = Microsoft.Office.Interop.Word; object Nothing = System.Reflect ...

  6. C#操作Word模板并且修改书签

    原文地址:C#操作Word模板并且修改书签作者:大坏蛋 //生成WORD程序对象和WORD文档对象 Microsoft.Office.Interop.Word.Application appWord ...

  7. C# 操作Word书签(二)——插入图片、表格到书签;读取、替换书签

    概要 书签的设置可以帮助我们快速的定位某段文字,使用起来很方便,也很节省时间.在前一篇文章"C# 如何添加/删除Word书签"中介绍了插入.删除书签的方法,本篇文章将对C# 操作W ...

  8. C# 操作Word书签(一)插入、删除书签

    概要 书签的设置可以帮助我们快速的定位某段文字,使用起来很方便,也很节省时间.对word文档中的书签操作,比较常见的是直接对某段文字插入书签,在下面的示例中,除了介绍插入书签的方法外,也将介绍操作书签 ...

  9. C# 操作Word书签(二)——读取、替换Word书签

    在上一篇文章中介绍了关于C#如何插入Word书签.插入图片或表格到word.删除word书签等内容,本篇文章将继续介绍C#操作word书签的方法.下面的示例中将介绍 C# 如何读取Word书签 C# ...

  10. java操作word,添加页眉,页眉图片,替换书签,添加水印(全)

    java操作word文档,添加页眉文本,页眉图片,替换书签,水印 原模板截图: 生成后的文档效果截图: 第一步:引入maven <dependency><groupId>spi ...

最新文章

  1. 静态路由和默认路由的配置实例
  2. 全面解读PyTorch内部机制
  3. 红帽企业版6.0 KVM虚拟化实战攻略02
  4. 《大话数据结构》第9章 排序 9.5 直接插入排序
  5. Nginx笔记-处女篇
  6. pytorch两种常用的学习率衰减方法
  7. Maven项目配置、检出、运行
  8. azure devops中文显示乱码_Azure DevOps Server:Git权限设置
  9. [VB.net]飞龙·网页及贴吧操作II
  10. Vue.js之使用vue-cli初始化项目
  11. 使用Eclipse查看反编译后的代码(Decompiler 插件)
  12. MapXtreme2004鹰眼程序
  13. plc基础知识入门学习
  14. Latex 符号(Symbols)
  15. html怎么把桌面的图片放大缩小,css怎么让图片随屏幕大小改变?
  16. HTML5 CSS3做的一个静态的苹果官网首页
  17. 数据库系列之MySQL表ibd文件删除恢复
  18. 如何克服自己的懒惰-第二弹
  19. linux wrf 系统_linux wrf 系统
  20. 2020计算机专硕考数二的学校,2020考研备考:考研数一、数二、数三哪个最难?...

热门文章

  1. axure 折线图部件_在Axure中怎么做柱状图、折线图啊?
  2. android 翻译功能开发,Android使用有道翻译API实现在线翻译功能
  3. 微信小程序 弹出确定取消框
  4. 论文《Fast spatial–temporal stereo matching for 3Dface reconstruction under speckle pattern projection》
  5. win10家庭版破解lr11遇到的问题
  6. 踫撞检测 之一 — 关于分离轴理论的解释(Separating Axis Theorem (SAT) Explanation)(完整翻译)
  7. python 基于onvif协议 修改摄像头分辨率亮度等操作(window版本
  8. 都在说视频号,真有机会?
  9. 实践秘籍:Boosting 与 AdaBoost
  10. ab变频器22b用户手册_AB变频器22B-D4P0N104