強(qiáng)化VB.NET Word文檔創(chuàng)建Document對(duì)象
許多人都知道Word文檔的重要性,而在VB.NET Word文檔也是很重要的,由于Microsoft Office套件的普及,Word文檔、電子表格文檔、電子幻燈片等文檔日漸常用。雖然在Office中各個(gè)程序的文檔可以方便地轉(zhuǎn)換,但是這種轉(zhuǎn)換是以失去文檔原本的格式為代價(jià)的。例如,在自動(dòng)組卷系統(tǒng)中,存儲(chǔ)在Access數(shù)據(jù)庫(kù)中的試卷可以通過(guò)Access提供的導(dǎo)出功能產(chǎn)生Word文檔,但產(chǎn)生的文檔是無(wú)格式的,需花費(fèi)大量時(shí)間重新排版方可符合用戶在試卷格式上的要求。
VB.NET Word文檔的創(chuàng)建
1、Visual Basic中創(chuàng)建Document對(duì)象
所有的工作都從Document對(duì)象開始,首先在Visual Basic中創(chuàng)建一個(gè)Document對(duì)象的實(shí)例,然后就可以對(duì)該實(shí)例進(jìn)行各種可控制:
- Dim newDoc As Word.Document
- Set newnewDoc = new Word.Document
一旦創(chuàng)建了Document對(duì)象,就可以設(shè)置文檔的缺省格式,通過(guò)設(shè)置Content子對(duì)象的字體、行間距等屬性加以實(shí)現(xiàn):
- With newDoc
- .Content.Font.Name = "宋體"
- .Content.Font.Size = 12
- .Content.Paragraphs.LineSpacing = 15.5
- End With
由此得到了一個(gè)空Word文檔。
2、向Word文檔中添加文本
接下來(lái),向空文檔中添加文本,這將使用Paragraphs集合對(duì)象來(lái)完成此項(xiàng)工作。InsertAfter方法將文本插入到Selection 或 Range 對(duì)象后;InsertBefore 方法將文本插入到Selection 或 Range 對(duì)象前。以下代碼向文檔結(jié)尾處添加一個(gè)段落并設(shè)置本段落格式:
- With newDoc
- .Content.InsertAfter "示例段落…"
- .Paragraphs(NewDoc.Paragraphs.count).Alignment = wdAlignParagraphCenter
- .Paragraphs(NewDoc.Paragraphs.count).Range.Font.Bold = True
- .Paragraphs(NewDoc.Paragraphs.count).Range.Font.Size = 28
- End With
可用 Paragraphs(index) 返回一個(gè) Paragraph 對(duì)象,其中 index 為索引號(hào);count屬性值表示該文檔主文字部分中的Paragraph對(duì)象數(shù)。NewDoc.Paragraphs.count恰好為當(dāng)前正在添加的文本段落的索引號(hào)。
如果需要插入表格,可以使用Table 對(duì)象。Add 方法可以在指定范圍內(nèi)新增一表格。下例在活動(dòng)文檔的起始處添加一 3 x 4 的表格。
- Set myRange = ActiveDocument.Range(Start:=0, End:=0)
- ActiveDocument.Tables.Add Range:=myRange, NumRows:=3, NumColumns:=4
以可以使用制表字符得到表格。以下代碼在文檔尾部插入一個(gè)1x4 的表格。
- NewDoc.Content.InsertAfter "得分" & vbTab & " " & vbTab & "評(píng)卷人" & vbTab & " " & vbCr
當(dāng)所有段落都添加到文檔以后,可以使用 PageSetup對(duì)象進(jìn)行頁(yè)面設(shè)置,這需要通過(guò)設(shè)置PageSetup對(duì)象的各種屬性來(lái)完成。
1)設(shè)置分欄和欄間距:
- newDoc.PageSetup.TextColumns.SetCount NumColumns:=2
- newDoc.PageSetup.TextColumns.Spacing = CentimetersToPoints(2)
2)設(shè)置頁(yè)邊距:
- With newDoc.PageSetup
- .TopMargin = CentimetersToPoints(4.5)
- .BottomMargin = CentimetersToPoints(1.5)
- .LeftMargin = CentimetersToPoints(0.8)
- .RightMargin = CentimetersToPoints(2)
- End With
3)設(shè)置紙張大?。?/STRONG>
- With newDoc.PageSetup
- .PageHeight = CentimetersToPoints(28.1)
- .PageWidth = CentimetersToPoints(38.9)
- End With
其他的設(shè)置項(xiàng)目不再詳述。
3、輸出文檔
對(duì)創(chuàng)建完畢的文檔,我們可以選自保存為磁盤文件或直接打印輸出:
- newDoc.SaveAs FileName:="Sample.doc"
- newDoc.PrintOut
該系統(tǒng)產(chǎn)生的試卷要求直接用于考核和選拔基層干部的考試中,首先由出題者輸入試卷參數(shù),即組卷規(guī)則,然后由軟件自動(dòng)組卷并輸出Word格式的試卷。筆者應(yīng)用上述方法開發(fā)的軟件系統(tǒng)完全滿足了用戶需求。系統(tǒng)現(xiàn)已投入運(yùn)行,極大地提高了工作效率,獲得了用戶的好評(píng)。
結(jié)束語(yǔ)
本文提出的在VB.NET Word文檔創(chuàng)建的方法基于對(duì)象模型,實(shí)用性強(qiáng),也可以用于其它支持ActiveX的開發(fā)平臺(tái)中。