基于OfficePIA自动生成Word文档

时间:2023-12-25 点赞:43955 浏览:84233 作者原创标记本站原创

本文是一篇自动化论文范文,自动化方面有关毕业论文题目,关于基于OfficePIA自动生成Word文档相关毕业论文格式模板范文。适合自动化及段落及参考文献方面的的大学硕士和本科毕业论文以及自动化相关开题报告范文和职称论文写作参考文献资料下载。

摘 要:随着办公量的日益增大,对办公软件的二次开发以适应需求的趋势变得必要.该文介绍了VB.NET环境下通过OfficePIA对Word工程配筋计算报告书进行编程设计的方法,包括文档文字、图片和表格等的自动生成与排版设计.采用该方法可大幅度提高办公效率.

关 键 词:OfficePIA;VB.NET;Word;自动化

中图分类号:TP311文献标识码:A文章编号:1009-3044(2013)12-2899-05

计算机的程序开发应用广泛,对Office软件的二次开发实现办公的自动化大幅提高办公的效率和准确性.Office的编程接口都是通过COM组件公开的,任何访问Office编程接口的程序,实际上都必须要最终调用OfficeCOM组件.基于OfficePIANet能够让开发人员非常方便的访问COM组件.该文使用VB.NET进行Word内容的排版、页眉页码的插入、目录生成和保存等,实现报告文档的自动化输出,并以某冷却塔工程配筋内容为测试数据为实例,将主程序的配筋计算过程与结果以计算书的形式体现.

1OfficePIA与VB.NET概述

OfficePIA(PrimaryInteropAssembly),PIA的意思可以理解为“互操作程序集”,PIA按照Office的各个组件(Word、Excel、PowerPoint等),分成多个单独的程序集.比如Word对应的PIA程序集是Microsoft.Office.Interop.Word.dll(程序集里面的类都放在命名空间Microsoft.Office.Interop.Word中).

VB.NET是VisualBasic.NET的简称,是VisualBasic语言演变而来,是基于.NET框架的完全面向对象的编程语言.VisualBasic允许开发人员开发面向Web、Windows、和移动设备的程序.使用VB.NET编写的程序都具有安全性和代码易于维护,可扩展性,代码重用技术的优点.使用VB.NET能够非常方便的通过PIA来访问Office.COM组件.

2实现方法[1-3]

本文将从添加程序集引用、添加新文档、插入文本、图片和表格、设置标题样式、插入页眉页码、生成目录、保存文档等分别进行阐述.

1)添加office组件的引用

在程序的解决方案资源管理器中添加对添加一个对WordCOM组件的引用,操作为选择“引用”中的“添加”,选择COM组件中Word2010版本的“MicrosoftWord14.0ObjectLibrary”,Word2007版本为“MicrosoftWord12.0ObjectLibrary”.

然后,需要在程序中声明对命名空间“Microsoft.Office.Interop.Word”的引用,具体操作为:

ImportsMicrosoft.Office.Interop.Word

2)新建Word文档

首先,使用下面的代码激活WordCOM接口:

myWordApp等于NewApplication

myWordApp.Visible等于True

然后使用Document.Add()方法添加新文档.Office编程接口中添加新文档的方法中不需要的参数可以使用.NET中自带的静态对象Type.Missing,如下面代码所示:

Dimmissing等于System.Reflection.Missing.Value

myDoc等于myWordApp.Documents.Add(missing,missing,missing,missing)

3)插入文字

为了便于设置文本格式,以Paragraph为对象设置每个段落文字的字体、字号和缩进等格式.

Dimmypara(1)AsParagraph

mypara(1)等于myDoc.Paragraphs.Add()

mypara(1).Range.Text等于("段落文本")

mypara(1).Range.Font.Size等于12

mypara(1).Range.ParagraphFormat.FirstLineIndent等于myWordApp.CentimetersToPoints(0.35)

同样这里可以设置行距(LineSpacingRule),大纲级别(OutlineLevel),对齐方式(Alignment)等的段落格式.


然而,对于一篇文档而言,可能用到的标题样式可能只有几种,测试表明,Word文档自动化生成过程中,使用设置标题样式要比对每个段落分别设置段落格式的速度要快得多.因此,建议使用标题样式方法来设置文本格式,如下述代码所示:

myDoc.Styles.Add("标题1",1)

WithmyWordApp.ActiveDocument.Styles("标题1")

.ParagraphFormat.OutlineLevel等于WdOutlineLeve

l.wdOutlineLevel1

.Font.Size等于20

.Font.Bold等于True

EndWith

mypara(1).Range.Style等于myDoc.Styles("标题1")

4)插入图片DimPicshaps(1)AsInlineShape

Picshaps(1)等于myWordApp.Selection.InlineShapes.AddPicture("图片路径+图片名")

Picshaps(1).Height等于myWordApp.CentimetersToPoin

ts("图片高度值")

Picshaps(1).Width等于myWordApp.CentimetersToPoin

s("图片宽度值")

插入表格(指定Rows、Cols行数列数):

Dimmytable(1)AsTable

DimNumRows,NumColumnsAsInteger

NumRows等于Rows:NumColumns等于Cols

mytable等于myDoc.Tables.Add(myWordApp.Selection.

Range(),NumRows,NumColumns)

mytable(1).Cell(r,c).Range.Text等于"单元格内容"

5)插入页眉

WithmyWordApp.ActiveWindow

.ActivePane.View.SeekView等于Microsoft.Office.Interop.Word.WdSeekView.wdSeekPrimaryHeader

.ActivePane.Selection.TypeText("页眉名")

EndWith

6)插入页码

myDoc.ActiveWindow.View.SeekView等于Microsoft.Office.Interop.Word.WdSeekView.wdSeekPrimaryFooter‘光标移到页脚处

WithMyWordApp.Selection.HeaderFooter.PageNumb

ers

.NumberStyle等于WdPageNumberStyle.wdPageNumberStyleArabic

.StartingNumber等于1

EndWith

myWordApp.ActiveDocument.Sections(1).Footers(WdHeaderFooterIndex.wdHeaderFooterPrimary).PageNumbers.Add(PageNumberAlignment:等于WdPageNumberAlignment.wdAlignPageNumberCenter,FirstPage:等于True)

7)在文档第一页生成目录

WithmyDoc

DimmyRange等于myDoc.Range(Start:等于0,End:等于0)

.TablesOfContents.Add(Range:等于myRange,RightAlignPageNumbers:等于True,UseHeadingStyles:等于True,

UpperHeadingLevel:等于1,LowerHeadingLevel:等于3,IncludePageNumbers:等于True,AddedStyles:等于"",UseHyperlinks:等于True,HidePageNumbersInWeb:等于True,UseOutlineLevels:等于True)

.TablesOfContents(1).TabLeader等于WdTabLeader.w

dTabLeaderDots

.TablesOfContents.Format等于Microsoft.Office.Intero

p.Word.WdIndexType.wdIndexIndent

EndWith

8)保存文档

这里我们只需要使用Document.Se()方法的第一个参数,即保存路径)对于不需要的参数,可以使用.NET中自带的静态对象:Type.Missing即可.

Dimmissing等于System.Reflection.Missing.Value

myDoc.SeAs()第一个参数为路径+文件名,后面的15个参数均为missing.

9)退出Word:myWordApp.Quit().

3程序测试

3.1文本内容

自动化输出文档的内容分为各段落文本内容(计算书的叙述性文字,公式等)及与其对应的标题样式名称(如表1所示).

3.2自动化过程

1)新建标题样式

创建表2中的标题样式.下面以“标题1”为例展示新建标题样式的方法:

myDoc.Styles.Add(Name:等于"标题1",Type:等于WdStyleT

ype.wdStyleTypeParagraph)

WithmyWordApp.ActiveDocument.Styles(“标题1”)

.ParagraphFormat.OutlineLevel等于WdOutlineLevel.

wdOutlineLevel1

.Font.Color等于WdColor.wdColorBlack

.Font.Size等于14.Font.Name等于"宋体"

.Font.Bold等于True

.ParagraphFormat.Alignment等于WdParagraphAlign

Ment.wdAlignParagraphRight

EndWith

3.3调用测试数据出报告[4]

各段落序号用i表示,其内容保存在Data1(i,1)中,纯文本段落代码如下:

myDoc.ActiveWindow.View.SeekView等于Microsoft.Office.Interop.Word.WdSeekView.wdSeekMainDocument‘确保光标处于主文档

mypara(i)等于myDoc.Content.Paragraphs.Add()

mypara(i).Range.Text等于Trim(Data1(i,1))

mypara(i).Range.InsertParagraphAfter()

如果某些段落文字中包含有公式图片,处理方法如下:

用空格替换“{/图片名/}”中的特殊字符“{/”和“/}”,使用Split函数将一个段落内容分为几段得到一维数组NewData1(),按顺序输出到Word中.实现一个包含公式符号图片的段落内容插入的代码如下:

DimIndexasInteger

Fori等于0ToUBound(NewData1)

IfNewData1(i).Contains(".wmf")Then

Index等于Index+1

Picshaps(Index)等于oWordApplic.Selection.InlineS

hapes.AddPicture("路径+图片名名")

ElseoWordApplic.Selection.TypeText(NewData1(i))

EndIf

Next

为保证一个段落里的文字和公式图片在同一行保持整齐,使用“居中”的文本对其方式:

mypara(i).Range.ParagraphFormat.BaseLineAlignment等于WdBaselineAlignment.wdBaselineAlignCenter

然后使用Select语句将各段对应标题(保存在Data1(i,0)中)赋给相应段落:

SelectCaseData1(i,0)

Case"标题1"

mypara(i).Range.Style等于myDoc.Style("标题1")

Case"正文文本"

mypara(i).Range.Style等于myDoc.Style("正文")

EndSelect

然后按照2实现方法中的方法进行插入页眉页码、插入目录和保存文档等工作.

3.4图片与表格的处理方法

段落内容中可能包含表示公式的图片,使用Mathtype把需要&

本文是一篇自动化论文范文,自动化方面有关毕业论文题目,关于基于OfficePIA自动生成Word文档相关毕业论文格式模板范文。适合自动化及段落及参考文献方面的的大学硕士和本科毕业论文以及自动化相关开题报告范文和职称论文写作参考文献资料下载。

#30340;公式保存为wmf矢量格式图片,来代替在Word中使用Mathtype输入公式的步骤,在测试数据文本中,段落内容中相应位置的图片使用特殊符号{/图片名/}代表该处的公式.这样,读取的内容均为字符串.

如果文档中有表格,增加一个表格内容的文本文件,同时在表1的段落内容位置备注表格内容的文本文件地址和文件名,设计出表格的布局,读取包含该表格内容的文本文件来填充表格.

3.5注意事项

1)对于多段落的文档,mypara(i)等于myDoc.Content.Paragraphs.Add()应与mypara(i).Range.InsertParagraphAfter()搭配使用,实现段落的连续插入,使用oWordApplic.Selection.

EndKey(Word.WdUnits.wdStory,missing)实现光标进入下一个段落,然后进行该段落的文本插入工作.

2)这种操作Word生成文本的方法,关键是对Word界面光标位置和范围的定位,例如Selection,RangeActivePane.View.SeekView等,控制在不同位置插入内容以及不同范围对象的格式设置等.

3.6程序运行结果

程序自动化生成Word文档的正文、目录和表格分别如图1至图3所示.

4结束语

本文对Word自动化生成文档进行论述,针对工程中钢筋配筋计算书的特点,基于OfficePIA技术使用VB.NET自动生成了冷却塔配筋计算书报告,根据本文研究思路和方法,得到如下结论:

1)本文以VB.NET为平台,通过PIA操作Word自动生成文档,便于作为辅助程序与VB.NET程序中工程计算的主程序整合,为计算过程提供一个正式、美观的展示方式.

2)这种操作Word生成文本的方法,关键是对Word界面光标位置和范围的控制,例如Range,SelectionActivePane.View.SeekView等.

3)该方法对批量处理的文档具有较好的适用性.

相关论文

C#动态生成WORD文档实现报表打印

本文是一篇信息管理系统论文范文,信息管理系统方面专科毕业论文开题报告,关于C 动态生成WORD文档实现报表打印相关在职毕业论文范文。适合信。

如何在word文档中自动生成公式编号

该文为关于公式类本科毕业论文范文,与如何在word文档中自动生成公式编号相关毕业论文格式范文,可作为论文格式专业公式论文写作研究的大学。

如何在word文档中生成目录事项

关于目录及事项及标题方面的免费优秀学术论文范文,目录相关职称论文发表在哪,关于如何在word文档中生成目录事项相关论文范文数据库,对写。

如何在word文档中生成目录事项

本论文是一篇关于目录大学毕业论文中期报告,关于如何在word文档中生成目录事项相关毕业论文提纲范文。免费优秀的关于目录及事项及标题方面。

WEB环境中WORD文档生成技术讨

本文是一篇互联网论文范文,互联网方面毕业论文格式,关于WEB环境中WORD文档生成技术讨相关本科毕业论文范文。适合互联网及空格及参考文献方。

word文档添加页眉、页脚的详细步骤

这篇页眉论文范文属于论文格式免费优秀学术论文范文,页眉类有关在职毕业论文开题报告,与word文档添加页眉、页脚的详细步骤相关学术论文格式。

怎样自动生成Word目录

关于目录及标题及毕业论文方面的免费优秀学术论文范文,关于目录方面职称论文有什么要求,关于怎样自动生成Word目录相关论文例文,对写作目。

word文档添加页眉、页脚的详细步骤

关于页眉及步骤及选项方面的免费优秀学术论文范文,关于页眉方面职称论文检索,关于word文档添加页眉、页脚的详细步骤相关论文范例,对写作。