office编程必不可少 [转]

1. 微软官方实例:

段落、表格、图表

HOW TO:利用 Visual C# .NET 使 Word 自动新建文档

2. 学习资源

(1)Word in the Office 基础知识,必读,下面的总结里有内容摘要

http://msdn.microsoft.com/en-us/library/Aa201330

网友翻译版:http://blog.csdn.net/hustliangchen/archive/2011/01/05/6118459.aspx

(2)Word类的结构图,Application、document、Range、Selection等,必读

http://msdn.microsoft.com/en-us/library/aa164012

(3)word 2007 对象模型 :

http://msdn.microsoft.com/en-us/library/bb244515(v=office.12).aspx

(4)Microsoft.Office.Interop.Word

http://msdn.microsoft.com/zh-cn/library/ms254954(v=Office.11).aspx

(5)WPS 二次开发接口文档 wpsapi.chm

中文方便阅读,CSDN下载

(6)飞蛾 Word VBA 参考教程

全中文Word类库,必读

http://www.feiesoft.com/vba/word/

(7)用VBA宏提高Word操作效率——需要精研的20个经典实例

http://pcmag.hexun.com/2010-03-18/123031946.html

3.一些总结

(1)Document 代表一个具体的word文档, Documents 是 Document的集合,用index索引来表示某一个document。ActiveDocument属性是当前焦点(focus)的document。我们一般不会用索引来引用文档,因为索引值会随着文档的打开和关闭而改变;通常我们用 ActiveDocument属性,或者 Documents 集合的Add 或 Open方法返回的document对象变量来引用。Add或Open的document会成为 ActiveDocument,如果想使其它document成为activeDocument,则使用 document对象的ActiveDocument方法。

用文件名指明具体Documnet,Documents("Report.doc").Activate();

(2) characters组成words,words组成sentences,sentences组成paragraphs,因此一个document中会包含这样四个集合: Characters Words, Sentences ,Paragraphs collection。此外,document还可能包含sections的集合,而一个section又会有HeadersFooters 页眉页脚集合。

(3)Paragraph段落,由一个段落标志和所有文本组成。拷贝段落时如果包含了段落标志,则段落格式也会一同拷贝。不想拷贝格式的话就不要拷贝段落标志。

(3)Range对象,代表一块连续的由起始字符和结束字符定义的区域,可以小到只有一个插入光标或大至整个文档内容,它也可以是但并不必须是当前selection代表的区域。可以在一个文档中定义多个Range对象。

我们通常用Range类定义一个变量来创建Range对象,然后用Document的Range方法或其它对象的Range属性来实例化这个Range对象。

(4)Selection对象

可代表光标

该对象代表窗口或窗格中的当前所选内容。所选内容代表文档中被选定(或突出显示的)的区域,若文档中没有所选内容,则代表插入点。每个文档窗格只能有一个活动的 Selection对象,并且整个应用程序中只能有一个活动的 Selection对象。
使用 Selection对象
使用Selection属性可返回 Selection对象。如果没有使用 Selection属性的对象识别符,Word 将返回活动文档窗口的活动窗格中的所选内容。

Text属性是其选中的内容

Copy、Cut、Paste方法进行复制、剪切、粘贴等操作

(5)sections

Sections.Add 方法

该方法用于返回一个 Section 对象,该对象表示添加至文档中的新节。
Function Add([Range As Range = 0],  [Start As WpsSectionStart = 2]) As Section

参数说明
Range    Variant 类型,可选。在其之前插入分节符的区域。如果忽略本参数,则将分节符插至文档末尾。
Start    Variant 类型,可选。要添加的分节符类型。WpsSectionStart 类型。如果忽略本参数,则添加“下一页”类型的分节符。
    WpsSectionStart 类型可以是下列常量之一:
    值     描述
    wpsSectionContinuous     连续分节符
    wpsSectionEvenPage     偶数页分节符
    wpsSectionNewColumn     节的结尾
    wpsSectionNewPage     下一页分节符(默认)
    wpsSectionOddPage     奇数页分节符

Sections 参考MSDN

Section  参考MSDN

4. 具体使用

(1)如何设置标题样式,“标题一”,“标题二”等 参考

[c-sharp] view plaincopyprint?

  1. public void AddTitle(string s)
  2. {
  3. //Word段落
  4. Word.Paragraph p;
  5. p = oDoc.Content.Paragraphs.Add(ref missing);
  6. //设置段落中的内容文本
  7. p.Range.Text = s;
  8. //设置为一号标题
  9. object style = Word.WdBuiltinStyle.wdStyleHeading1;
  10. p.set_Style(ref style);
  11. //添加到末尾
  12. p.Range.InsertParagraphAfter();  //在应用 InsertParagraphAfter 方法之后,所选内容将扩展至包括新段落。
  13. }
  14. ///
  15. /// 添加普通段落
  16. ///
  17. ///
  18. public void AddParagraph(string s)
  19. {
  20. Word.Paragraph p;
  21. p = oDoc.Content.Paragraphs.Add(ref missing);
  22. p.Range.Text = s;
  23. object style = Word.WdBuiltinStyle.wdStyleBodyText;
  24. p.set_Style(ref style);
  25. p.Range.InsertParagraphAfter();
  26. }

/// 添加普通段落 /// /// public void AddParagraph(string s) { Word.Paragraph p; p = oDoc.Content.Paragraphs.Add(ref missing); p.Range.Text = s; object style = Word.WdBuiltinStyle.wdStyleBodyText; p.set_Style(ref style); p.Range.InsertParagraphAfter(); }

(2)如何插入表格

使用Word的Table类,有人还使用DataTable类进行辅助

(3)如何插入图片

InlineShapes是Word中内嵌的图形等资源

[c-sharp] view plaincopyprint?

  1. public void InsertImage(string strPicPath, float picWidth, float picHeight)
  2. {
  3. string FileName = strPicPath;
  4. object LinkToFile = false;
  5. object SaveWithDocument = true;
  6. object Anchor = oWord.Selection.Range;
  7. oWord.ActiveDocument.InlineShapes.AddPicture(FileName, ref LinkToFile, ref SaveWithDocument, ref Anchor).Select();
  8. oWord.Selection.InlineShapes[1].Width = picWidth; // 图片宽度
  9. oWord.Selection.InlineShapes[1].Height = picHeight; // 图片高度
  10. }

? 插入图片后为什么又没了?

这可能是由于你在插入图片后,又插入东西,但是你没有移动光标,所以把图片给覆盖掉了。

解决方法:光标移动

(4)光标移动

A:标签:

系统预定义标签:object oEndOfDoc = "//endofdoc";

自定义标签:

B:利用标签获取位置

Word.Range wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;

插入段落、表格时都会用到这个位置:

oPara3 = oDoc.Content.Paragraphs.Add(ref oRng);

oTable = oDoc.Tables.Add(wrdRng, 3, 5, ref oMissing, ref oMissing);

[c-sharp] view plaincopyprint?

  1. // Go to a predefined bookmark, if the bookmark doesn‘t exists the application will raise an error
  2. public void GotoBookMark(string strBookMarkName)
  3. {
  4. // VB :  Selection.GoTo What:=wdGoToBookmark, Name:="nome"
  5. object Bookmark = (int)Microsoft.Office.Interop.Word.WdGoToItem.wdGoToBookmark;
  6. object NameBookMark = strBookMarkName;
  7. oWord.Selection.GoTo(ref Bookmark, ref missing, ref missing, ref NameBookMark);
  8. }
  9. public void GoToTheEnd()
  10. {
  11. // VB :  Selection.EndKey Unit:=wdStory
  12. object unit;
  13. unit = Microsoft.Office.Interop.Word.WdUnits.wdStory;
  14. oWord.Selection.EndKey(ref unit, ref missing);
  15. }
  16. public void GoToTheBeginning()
  17. {
  18. // VB : Selection.HomeKey Unit:=wdStory
  19. object unit;
  20. unit = Microsoft.Office.Interop.Word.WdUnits.wdStory;
  21. oWord.Selection.HomeKey(ref unit, ref missing);
  22. }

(5)生成目录

[c-sharp] view plaincopyprint?

  1. public void insertContent() //利用标题样式生成目录
  2. {
  3. GoToTheBeginning();
  4. object start = 0;
  5. object end = 0;
  6. Word.Range myRange = oWord.ActiveDocument.Range(ref start, ref end); //位置区域
  7. object useHeadingStyle = true; //使用Head样式
  8. object upperHeadingLevel = 1;  //最大一级
  9. object lowerHeadingLevel = 3;  //最小三级
  10. object useHypeLinks = true;
  11. //TablesOfContents的Add方法添加目录
  12. oDoc.TablesOfContents.Add(myRange, ref useHeadingStyle,
  13. ref upperHeadingLevel, ref lowerHeadingLevel,
  14. ref missing, ref missing, ref missing, ref missing,
  15. ref missing, ref useHypeLinks, ref missing, ref missing);
  16. oDoc.TablesOfContents[1].UpdatePageNumbers(); //更新页码
  17. }
  18. #endregion

(6)目录格式怎么设置?比如加粗、倾斜等

利用段落格式设置

[c-sharp] view plaincopyprint?

    1. public void formatContent() {
    2. Word.TableOfContents myContent = oDoc.TablesOfContents[1]; //目录
    3. Word.Paragraphs myParagraphs = myContent.Range.Paragraphs; //目录里的所有段,一行一段
    4. int[] FirstParaArray = new int[3]{ 1, 8, 9 }; //一级标题,直接指定
    5. foreach (int i in FirstParaArray) {
    6. myParagraphs[i].Range.Font.Bold = 1;  //加粗
    7. myParagraphs[i].Range.Font.Name = "黑体"; //字体
    8. myParagraphs[i].Range.Font.Size = 12; //小四
    9. myParagraphs[i].Range.ParagraphFormat.SpaceBefore = 6; //段前
    10. myParagraphs[i].Range.ParagraphFormat.SpaceAfter = 6; //段后间距
    11. }
    12. }
时间: 2024-08-03 17:40:11

office编程必不可少 [转]的相关文章

office编程必不可少

原文:office编程必不可少 [转] 1. 微软官方实例: 段落.表格.图表 HOW TO:利用 Visual C# .NET 使 Word 自动新建文档 2. 学习资源 (1)Word in the Office 基础知识,必读,下面的总结里有内容摘要 http://msdn.microsoft.com/en-us/library/Aa201330 网友翻译版:http://blog.csdn.net/hustliangchen/archive/2011/01/05/6118459.aspx

从事UNIX/LInux服务器编程最方便的代码编译工具------(eclipse for c/c++)、(FileZilla)、(Secure CRT) 这三种一定要一起使用 之3

这篇博文主要是安装eclipse for c/c++.同时也让我感受到eclipse工具的强大,尽然也支持c++,虽然在linux编程中仅仅起到编码的作用但是功能不容小觑. 下面进行eclipse for c/c++的安装: 在安装它之前必须安装如下两个插件之一: jdk-8u121-windows-i586_8.0.1210.13.exe jre-8u121-windows-i586_8.0.1210.13.exe 具体的下载地址点击这jdk,点击这jre.通过这两个简单下载直接傻瓜式安装即可

cocos2d-x网络编程 连接php服务器笔记1

学习cocos2d-x网络编程是一个非常尴尬的问题,因为熟悉cocos2d-x的学习者基本在游戏开发一块属于客户端编程,想自学网络编程必不可少的牵扯到服务器这块.但是问题是,谁会呢?离开服务器,那搞网络编程无疑就是海市蜃楼镜花水月.官网示例虽然有http短连接和socket长连接的例子但反正我看了之后不知所以,不明白怎么把它用在实际问题中.网上教程也大都是泛泛而谈,不是一些人尽皆知的大道理就是部分不能运行的源码,根本就没有从零教你怎么实现的文章.手游服务器用的技术我们不大可能很了解,据说长连接的

单片机与单片机编程

单片机就是片上计算机,广义的计算机可以理解为CPU+内存,那么单片机就是把CPU和内存封装在一块的芯片.它不同于我们习惯上认识的计算机,由于不带外设和封装性,它已经高度电子元器件化. 电子元器件,通俗的讲就是电路板上密密麻麻带有管脚的各种原件,电子原件通过贴片或直插的方式固定在电路板上.原件的正方向通常是使标记在上或左上的一个方位,在正方向的情况下,划出U形,按照先后顺序,从1开始为管脚编号. 单片机的管脚是其强大功能的本质,通过把预先写好的程序烧到单片机中运行,就可以随性所欲地控制单片机管脚的

0基础搭建Hadoop大数据处理-编程

Hadoop的编程可以是在Linux环境或Winows环境中,在此以Windows环境为示例,以Eclipse工具为主(也可以用IDEA).网上也有很多开发的文章,在此也参考他们的内容只作简单的介绍和要点总结. Hadoop是一个强大的并行框架,它允许任务在其分布式集群上并行处理.但是编写.调试Hadoop程序都有很大难度.正因为如此,Hadoop的开发者开发出了Hadoop Eclipse插件,它在Hadoop的开发环境中嵌入了Eclipse,从而实现了开发环境的图形化,降低了编程难度.在安装

Visual Studio Tools for Office (VSTO) 简介及资源整理

之所以接触VSTO(Visual Studio Tools for Office )是因为接到一个公司的面试通知,需要测试你的学习能力,让自己以前没有做过这方面开发的情况下,基于VSTO对Excel进行二次开发,完成两个简单的task.由于网上这方面的资料相对较少,随把自己收集到的一些资料整理处理,希望能对大家有所帮助. 1. Office 编程 以前的Office编程一般都是通过VBA进行,VBA是一个很简单的开发环境,集成在很多Office的产品中.每个Office的产品,如Word,Exc

基础搭建Hadoop大数据处理-编程

Hadoop的编程可以是在Linux环境或Winows环境中,在此以Windows环境为示例,以Eclipse工具为主(也可以用IDEA).网上也有很多开发的文章,在此也参考他们的内容只作简单的介绍和要点总结. Hadoop是一个强大的并行框架,它允许任务在其分布式集群上并行处理.但是编写.调试Hadoop程序都有很大难度.正因为如此,Hadoop的开发者开发出了Hadoop Eclipse插件,它在Hadoop的开发环境中嵌入了Eclipse,从而实现了开发环境的图形化,降低了编程难度.在安装

IT软件的编程方向 - 进阶者系列 - 学习者系列文章

IT软件经过了这么些年的发展,已经形成了很多的软件公司和开发团队,而且当前编程语言也有很多种,让开发人员能够有很大的选择.现在国际上的开发阵营基本分为ASP.NET.JAVA和PHP三种,但是每种开发语言能够进行的开发问题是统一的,本文就从IT软件的编程方向出发,介绍下当前主流的开发方向. 一.网站: 现在的互联网,随着电子商务的发展和企业内部办公系统的应用,以及编程语言的三大阵营的发展,已经形成了很多具体应用的网站系统.但是,在企业内部,很多还是使用ASP.NET和JAVA进行的程序设计,PH

Office开发需要的辅助工具

Office开发主要包括两个层面:功能开发和界面开发. 功能开发,指的是开发的产品能够解决哪些问题,其他人使用了你的工具改善了哪些方面. 界面开发,指的是产品与用户交互的方式,或者说产品呈现在Office窗口中的哪个场所. 一般来说,一个成熟完善的Office插件.工具在开发的过程中,都要考虑以上两个方面. 本帖和大家分享一下Office界面开发方面的话题. Office编程开发,允许开发人员植入的元素主要有: customUI(自定义功能区.Office菜单.右键菜单等) CustomTask