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)如何设置标题样式,“标题一”,“标题二”等 参考
- public void AddTitle(string s)
- {
- //Word段落
- Word.Paragraph p;
- p = oDoc.Content.Paragraphs.Add(ref missing);
- //设置段落中的内容文本
- p.Range.Text = s;
- //设置为一号标题
- object style = Word.WdBuiltinStyle.wdStyleHeading1;
- p.set_Style(ref style);
- //添加到末尾
- p.Range.InsertParagraphAfter(); //在应用 InsertParagraphAfter 方法之后,所选内容将扩展至包括新段落。
- }
- ///
- /// 添加普通段落
- ///
- ///
- 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();
- }
/// 添加普通段落 /// /// 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中内嵌的图形等资源
- public void InsertImage(string strPicPath, float picWidth, float picHeight)
- {
- string FileName = strPicPath;
- object LinkToFile = false;
- object SaveWithDocument = true;
- object Anchor = oWord.Selection.Range;
- oWord.ActiveDocument.InlineShapes.AddPicture(FileName, ref LinkToFile, ref SaveWithDocument, ref Anchor).Select();
- oWord.Selection.InlineShapes[1].Width = picWidth; // 图片宽度
- oWord.Selection.InlineShapes[1].Height = picHeight; // 图片高度
- }
? 插入图片后为什么又没了?
这可能是由于你在插入图片后,又插入东西,但是你没有移动光标,所以把图片给覆盖掉了。
解决方法:光标移动
(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);
- // Go to a predefined bookmark, if the bookmark doesn't exists the application will raise an error
- public void GotoBookMark(string strBookMarkName)
- {
- // VB : Selection.GoTo What:=wdGoToBookmark, Name:="nome"
- object Bookmark = (int)Microsoft.Office.Interop.Word.WdGoToItem.wdGoToBookmark;
- object NameBookMark = strBookMarkName;
- oWord.Selection.GoTo(ref Bookmark, ref missing, ref missing, ref NameBookMark);
- }
- public void GoToTheEnd()
- {
- // VB : Selection.EndKey Unit:=wdStory
- object unit;
- unit = Microsoft.Office.Interop.Word.WdUnits.wdStory;
- oWord.Selection.EndKey(ref unit, ref missing);
- }
- public void GoToTheBeginning()
- {
- // VB : Selection.HomeKey Unit:=wdStory
- object unit;
- unit = Microsoft.Office.Interop.Word.WdUnits.wdStory;
- oWord.Selection.HomeKey(ref unit, ref missing);
- }
(5)生成目录
- public void insertContent() //利用标题样式生成目录
- {
- GoToTheBeginning();
- object start = 0;
- object end = 0;
- Word.Range myRange = oWord.ActiveDocument.Range(ref start, ref end); //位置区域
- object useHeadingStyle = true; //使用Head样式
- object upperHeadingLevel = 1; //最大一级
- object lowerHeadingLevel = 3; //最小三级
- object useHypeLinks = true;
- //TablesOfContents的Add方法添加目录
- oDoc.TablesOfContents.Add(myRange, ref useHeadingStyle,
- ref upperHeadingLevel, ref lowerHeadingLevel,
- ref missing, ref missing, ref missing, ref missing,
- ref missing, ref useHypeLinks, ref missing, ref missing);
- oDoc.TablesOfContents[1].UpdatePageNumbers(); //更新页码
- }
- #endregion
(6)目录格式怎么设置?比如加粗、倾斜等
利用段落格式设置
- public void formatContent() {
- Word.TableOfContents myContent = oDoc.TablesOfContents[1]; //目录
- Word.Paragraphs myParagraphs = myContent.Range.Paragraphs; //目录里的所有段,一行一段
- int[] FirstParaArray = new int[3]{ 1, 8, 9 }; //一级标题,直接指定
- foreach (int i in FirstParaArray) {
- myParagraphs[i].Range.Font.Bold = 1; //加粗
- myParagraphs[i].Range.Font.Name = "黑体"; //字体
- myParagraphs[i].Range.Font.Size = 12; //小四
- myParagraphs[i].Range.ParagraphFormat.SpaceBefore = 6; //段前
- myParagraphs[i].Range.ParagraphFormat.SpaceAfter = 6; //段后间距
- }
- }
office编程必不可少的更多相关文章
- office编程必不可少 [转]
1. 微软官方实例: 段落.表格.图表 HOW TO:利用 Visual C# .NET 使 Word 自动新建文档 2. 学习资源 (1)Word in the Office 基础知识,必读,下面的 ...
- 使用.Net访问Office编程接口(PIA和IA的区别)
在这篇文章里面,我将向大家介绍如何在.Net中访问Office所公开的编程接口.其实,不管是使用哪种具体的技术来针对Office进行开发(比如VSTO,或者用C#编写一个Office Add-in,或 ...
- Python——office编程
一.office编程需求 二.Excel编程 import xlrd path=input("输入路径:") workbook=xlrd.open_workbook(path)#打 ...
- 演练:Office 编程(C# 和 Visual Basic)
https://msdn.microsoft.com/zh-cn/library/ee342218(v=vs.110).aspx PIA的全称是 primary interop assembly 主 ...
- Python——Microsoft Office编程
一.Excel 需要安装xlrd和xlwt这两个库 1.打开excel readbook = xlrd.open_workbook(r'\test\canying.xlsx') 2.获取读入的文件 ...
- IT软件的编程方向 - 进阶者系列 - 学习者系列文章
IT软件经过了这么些年的发展,已经形成了很多的软件公司和开发团队,而且当前编程语言也有很多种,让开发人员能够有很大的选择.现在国际上的开发阵营基本分为ASP.NET.JAVA和PHP三种,但是每种开发 ...
- Spire.Office组件使用例子
用.NET开发程序通常要涉及到对Office文件读写操作,比较常见的操作比如提取文本,导出Excel格式数据,动态生成word文档,生成pdf文档等. 实现这些功能通常需要在服务端安装office软件 ...
- 0基础搭建Hadoop大数据处理-编程
Hadoop的编程可以是在Linux环境或Winows环境中,在此以Windows环境为示例,以Eclipse工具为主(也可以用IDEA).网上也有很多开发的文章,在此也参考他们的内容只作简单的介绍和 ...
- Python核心编程(第3版)PDF高清晰完整中文版|网盘链接附提取码下载|
一.书籍简介<Python核心编程(第3版)>是经典畅销图书<Python核心编程(第二版)>的全新升级版本.<Python核心编程(第3版)>总共分为3部分.第1 ...
随机推荐
- 不同版本的SQL Server之间数据导出导入的方法及性能比较
原文:不同版本的SQL Server之间数据导出导入的方法及性能比较 工作中有段时间常常涉及到不同版本的数据库间导出导入数据的问题,索性整理一下,并简单比较下性能,有所遗漏的方法也欢迎讨论.补充. 0 ...
- Redis系列之(二):Redis主从同步,读写分离(转)
1. Redis主从同步 Redis支持主从同步.数据可以从主服务器向任意数量的从服务器上同步,同步使用的是发布/订阅机制. 2. 配置主从同步 Mater Slave的模式,从Slave向Maste ...
- Hadoop加zookeeper构建高可靠集群
事前准备 1.更改Linux主机名,每个人都有配置 vim /etc/sysconfig/network NETWORKING=yes HOSTNAME=hadoop-server1 2.改动IP / ...
- 基于hadoop的电影推荐结果可视化
数据可视化 1.数据的分析与统计 使用sql语句进行查询,获取所有数据的概述,包括电影数.电影类别数.人数.职业种类.点评数等. 2.构建数据可视化框架 这里使用了前端框架Bootstrap进行前端的 ...
- bzoj 2109 & 2535 空中管制 解读
[] [分析]小猪真的是一个很好的问题.我认为这是一个问题洪水.建立拓扑后(便! ).直接把最外层设定序号为1,第二层为2.bfs下去就可以. . . 结果发现:飞行序号不能同样.. . 于是開始想. ...
- The Swift Programming Language中国完整版
近来的ios的swift语言似乎火了.我没有objectc基金会,但在此之前有c随着java在...的基础上.从几天开始学习ios的swift语言,晚发表在博客形式.下面是英文版本翻译swif图书.还 ...
- Unity3D移动端内存优化(NGUI方面)
Unity3D引擎技术交流QQ群:[21568554] 做3d移动端内存一直是人们头疼的问题,载入的资源释放了,还有其它的须要释放.比方ngui释放,事实上主要是NGUI的Texture和Spr ...
- 【iOS】多线程GCD
GCD(Grand Central Dispatch) : 牛逼的中枢调度器.苹果自带,纯C语言实现,提供了许多且强大的函数,它能够提高代码的运行效率与多核的利用率. 一.GCD的基本使用 1.GCD ...
- 错误 4 自定义工具错误: 无法生成服务引用“DepartMentService”的代码。请检查其他错
原文:错误 4 自定义工具错误: 无法生成服务引用"DepartMentService"的代码.请检查其他错 问题: 错误 4 自定义工具错误: 无法生成服务引用" ...
- ExtJs在disabled和readOnly美学分析
ExtJs中disabled和readOnly美观度的分析 ExtJs中.假设设置输入框为仅仅读属性,一般第一考虑的都是readonly=true 它的效果和正常输入框一样,可是不同意输入: 然而,它 ...