袁金堂
(新疆生產(chǎn)建設(shè)兵團(tuán)興新職業(yè)技術(shù)學(xué)院,新疆 烏魯木齊 830074)
?
基于C#的Word文檔生成與格式固定功能的實(shí)現(xiàn)
袁金堂
(新疆生產(chǎn)建設(shè)兵團(tuán)興新職業(yè)技術(shù)學(xué)院,新疆 烏魯木齊 830074)
摘 要:文章主要介紹了基于C#設(shè)計(jì)的窗口應(yīng)用程序教學(xué)大綱格式生成器在開(kāi)發(fā)過(guò)程中所應(yīng)用到的關(guān)鍵知識(shí)點(diǎn),通過(guò)程序功能的實(shí)現(xiàn),討論使用C#操作Microsoft Word有效方法,以及具體函數(shù)的功能說(shuō)明和使用時(shí)的注意事項(xiàng)。
關(guān)鍵詞:Word;C#;Word操作;Word格式
Word是當(dāng)前使用范圍最廣的文字處理系統(tǒng),在工作、學(xué)習(xí)過(guò)程中使用的很多文檔都是由Word編寫(xiě)排版的。Microsoft Word是一個(gè)集成化環(huán)境,是美國(guó)微軟公司的字處理系統(tǒng),但是它決不僅僅是一個(gè)字處理系統(tǒng),它集成了Microsoft Visual Basic,可以通過(guò)編程來(lái)實(shí)現(xiàn)對(duì)Word 功能的擴(kuò)展[1-2]。
Word本身就具備強(qiáng)大的編程功能,同時(shí)也提供了豐富的編程接口,這就使得人們可以通過(guò)各種編程工具對(duì)Word進(jìn)行控制。在C#.NET中可以將Word的類(lèi)庫(kù)導(dǎo)入到程序中,使用COM技術(shù)編程,便可以在源碼中方便地使用各種函數(shù)、參數(shù)對(duì)Word進(jìn)行操作。C#.net將會(huì)自動(dòng)將庫(kù)文件轉(zhuǎn)化為DLL 組件,這樣只要在源碼中創(chuàng)建該組件對(duì)象即可達(dá)到操作Word的目的[3]。
本文將教學(xué)大綱格式固定為載體,通過(guò)Word文檔操作功能的實(shí)現(xiàn)來(lái)研究C#操作Word的方法。每門(mén)教學(xué)課程都需要有教學(xué)大綱,每門(mén)課程教學(xué)大綱的組成部分都大致相同,如都包括“課程名稱(chēng)”、“課時(shí)”、“適用對(duì)象”等等內(nèi)容。總體來(lái)說(shuō)每個(gè)學(xué)校都有自己的格式要求,但是這些格式要求都只是文字說(shuō)明,并不能保證所有老師對(duì)格式的設(shè)置都能滿足格式要求,甚至學(xué)校的格式說(shuō)明有時(shí)也并不是很?chē)?yán)謹(jǐn)。每學(xué)期開(kāi)學(xué)時(shí)對(duì)教學(xué)大綱的檢查,其中有70%的問(wèn)題都出在格式的設(shè)置上,內(nèi)容的填寫(xiě)都沒(méi)問(wèn)題,每個(gè)老師在教學(xué)大綱的設(shè)置上要花很多時(shí)間,把大部分時(shí)間花在格式的設(shè)置上是很不值得的。教學(xué)大綱生成器可解決這一問(wèn)題,可保證使用軟件生成的教學(xué)大綱格式都相同,只需填相應(yīng)的內(nèi)容即可,無(wú)需將時(shí)間浪費(fèi)在格式設(shè)置上。
主程序采用單窗口多個(gè)選項(xiàng)卡設(shè)計(jì),打開(kāi)程序進(jìn)入主界面后通過(guò)切換選項(xiàng)卡后可以看到教學(xué)大綱中所需填寫(xiě)的各項(xiàng)內(nèi)容。本軟件設(shè)計(jì)可以有兩種方式來(lái)固定教學(xué)大綱格式,第一種可以通過(guò)打開(kāi)文檔按鈕讀取需要設(shè)置格式的教學(xué)大綱Word文件,軟件會(huì)將每一項(xiàng)內(nèi)容識(shí)別出來(lái),再單擊生成文檔按鈕可以生成符合格式要求的教學(xué)大綱Word文檔。第二種方法是將每項(xiàng)內(nèi)容復(fù)制或填寫(xiě)到軟件中,全部完成后再單擊生成文檔按鈕也可生成符合格式要求的教學(xué)大綱Word文檔。每個(gè)學(xué)校對(duì)教學(xué)大綱格式、內(nèi)容上的要求會(huì)有部分差異存在,本軟件是以兵團(tuán)興新職業(yè)技術(shù)學(xué)院的教學(xué)大綱格式要求為基準(zhǔn)。
在程序代碼的實(shí)現(xiàn)過(guò)程中主要包含3個(gè)操作,第一個(gè)是打開(kāi)Word文檔操作在程序中創(chuàng)建一個(gè)文檔對(duì)象;第二個(gè)文檔的響應(yīng)操作,如插入、格式設(shè)置等;第三個(gè)是生成文檔的操作。
2.1 打開(kāi)Word文檔
打開(kāi)Word文檔對(duì)象是對(duì)Word操作的前提,程序在如果要操作一份Word文檔,則必須現(xiàn)在內(nèi)存中創(chuàng)建一個(gè)Word對(duì)象。
using quoteWord=Microsoft.Office.Interop.Word;//在項(xiàng)目中添加Word庫(kù)文件引用
using Microsoft.Office.Interop.Word;
quoteWord._Application wordProcess;//聲明Word應(yīng)用程序變量并初始化
wordProcess=new quoteWord.ApplicationClass();quoteWord._Document wordFile;//聲明Word文檔變量wordFile=wordProcess.Documents.Open(ref@ fileName,ref defaultNULL,ref readOnly,ref defaultNULL,ref defaultNULL,ref defaultNULL,ref defaultNULL,ref defaultNULL,ref defaultNULL,ref defaultNULL,ref defaultNULL,ref Visible,ref defaultNULL,ref defaultNULL,ref defaultNULL,ref defaultNULL);//打開(kāi)一個(gè)地址是fileName的文檔。
2.2 Word文檔設(shè)置操作
wordFile.Paragraphs.Format.LineSpacing=24f;//設(shè)置行距24磅
wordFile.PageSetup.PaperSize=quoteWord. WdPaperSize.wdPaperA4;//設(shè)置紙張為A4
wordFile.PageSetup.TopMargin=wordProcess. CentimetersToPoints(2.54f);//上頁(yè)邊距設(shè)置
wordFile.PageSetup.BottomMargin=wordProcess. CentimetersToPoints(2.54f);
wordFile.PageSetup.RightMargin=wordProcess. CentimetersToPoints(3.17f);
wordFile.PageSetup.LeftMargin=wordProcess. CentimetersToPoints(3.17f);
wordContent="《" + textBox1.Text.Trim()+"》課程教學(xué)大綱 ";//標(biāo)題的內(nèi)容及格式設(shè)置
wordFile.Paragraphs.Last.Range.Font.Name="黑體";//設(shè)置段落字體為“黑體”
wordFile.Paragraphs.Last.Range.Font.Size=15;//字號(hào)為15號(hào)
word File.Paragraphs.Last.Range.Text= wordContent;//要寫(xiě)入的語(yǔ)句
wordProcess.Selection.ParagraphFormat. Alignment=quoteWord.WdParagraphAlignment. wdAlignParagraphCenter;//行居中
wordFile.Paragraphs.Last.Format.LineSpacing= 18f;//設(shè)置當(dāng)前開(kāi)始的行間距為18磅
2.3 生成文檔操作
Word文檔保存
w o r d Ty p e = q u o t e W o r d .W d S a v e F o r m a t . wdFormatDocumentDefault;//將文檔對(duì)象的內(nèi)容保存為后綴名為DOCX的文檔,即Word 2007以后版本
w o r d Ty p e = q u o t e W o r d .W d S a v e F o r m a t . wdFormatDocument;//文檔對(duì)象的內(nèi)容保存為后綴名為DOC的文檔,即Word 2003之前版本
wordFile.SaveAs(ref path,ref wordType,ref defaultNULL,ref defaultNULL,ref defaultNULL,ref defaultNULL,ref defaultNULL,ref defaultNULL,ref defaultNULL,ref defaultNULL,ref defaultNULL,ref defaultNULL,ref defaultNULL,ref defaultNULL,ref defaultNULL,ref defaultNULL);//生成文檔操作
wordFile.Close(ref defaultNULL,ref defaultNULL,ref defaultNULL);//關(guān)閉對(duì)象并釋放資源
word Process.Quit(ref defaultNULL,ref defaultNULL,ref defaultNULL);
通過(guò)應(yīng)用程序?qū)σ恍┕潭ǜ袷轿臋n的設(shè)置可以提高工作效率,減少失誤,起到提高文檔格式要求的標(biāo)準(zhǔn)。Word自身本就提供豐富的編程接口,利用程序可以使用接口可以開(kāi)發(fā)出各種符合實(shí)際需求的Word文檔。本文所提供的方法不同于簡(jiǎn)單的模板技術(shù),而是通過(guò)程序內(nèi)部控制Word文檔,程序自動(dòng)完成復(fù)雜的Word各種操作,只需提供內(nèi)容即可直接生成最終結(jié)果。這中技術(shù)可以作為一個(gè)通用的模塊使用在各種需要生成Word文檔的應(yīng)用程序中。
[參考文獻(xiàn)]
[1]葉明,張諍.基于C#.NET的Word報(bào)告生成功能開(kāi)發(fā)[J]. 計(jì)算機(jī)工程與應(yīng)用,2008(9):104-106.
[2]魯保玉,楊新芳.用Delphi生成Word報(bào)告及動(dòng)態(tài)結(jié)構(gòu)表格[J].計(jì)算機(jī)軟件與應(yīng)用,2007(3):180- 183.
[3]孔令彥,董蓬勃,姜青香,等.使用Visual Basic操縱Microsoft Word對(duì)象生成報(bào)告文檔[J].計(jì)算機(jī)工程與應(yīng)用,2003(39):115- 117.
[4]黃偉.基于C#的Word文檔自動(dòng)生成技術(shù)的研究與應(yīng)用[J].南通職業(yè)大學(xué)學(xué)報(bào),2008(2):70-75.
Implementation of Word Document Generation and Format Fixed Function Based on C#
Yuan Jintang
(The Xinjiang Production and Construction Corps and New Vocational and Technical College,Urumqi 830074,China)
Abstract:In this paper,based on C# design of windows application program teaching outline format generator in the development process is applied to the key point of knowledge,through the program function realization,it is discussed using an effective method for C# operation of Microsoft Word,and specific function description and make the matters needing attention.
Key words:Microsoft Word;C#;Word operation;Word format
作者簡(jiǎn)介:袁金堂(1983-),男,江蘇贛榆,本科,助理講師;研究方向:計(jì)算機(jī)網(wǎng)絡(luò),軟件開(kāi)發(fā)。