国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

巧用Delphi與Excel實(shí)現(xiàn)電大學(xué)生證的自動(dòng)打印

2014-09-10 18:42陳一魁
電腦知識(shí)與技術(shù) 2014年6期
關(guān)鍵詞:學(xué)生證

陳一魁

摘要:信息技術(shù)無(wú)時(shí)無(wú)刻不在改變著人們的工作和生活方式,使得人們得以從重復(fù)繁瑣的勞作中解脫出來(lái),以更高的效率完成工作。該文詳細(xì)討論利用Delphi調(diào)用與操縱Excel數(shù)據(jù)的方式來(lái)實(shí)現(xiàn)電大學(xué)生證的自動(dòng)打印,主要包括Delphi中ADO組件的應(yīng)用、Excel數(shù)據(jù)的訪問(wèn)、通過(guò)ComObj單元接口操縱Excel實(shí)現(xiàn)打印。

關(guān)鍵詞:Delphi;Excel;學(xué)生證;自動(dòng)打印

中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)06-1352-03

Automatic Printing of TVU Students Card Using Delphi and Excel

CHEN Yi-kui

(Shanwei Radio and TV University,Shanwei 516600,China)

Abstract: Information technology has changed people's way of life and work, makes people free from repetitive and tedious work, and completing the work with greater efficiency. Discussed in this paper is how to realize the automatic printing of TVU student card with the application of delphi and excel, including the application of ADO component in Delphi, Excel data access, printing with the way of using ComObj interface to call excel function.

Key words: Delphi; excel; student card; aotumatic printing

電視大學(xué)是由分布在基層的市縣電大統(tǒng)一招生,由省電大和中央電大審核錄取。錄取工作完成后,市縣電大會(huì)收到由省電大下發(fā)的Excel文檔格式的錄取學(xué)生名單和相應(yīng)數(shù)量的空白學(xué)生證。市縣電大教務(wù)人員再將學(xué)生名單和空白學(xué)生證分發(fā)給各班輔導(dǎo)員,由輔導(dǎo)員手動(dòng)填寫制作學(xué)生證。手寫學(xué)生證存在效率低、不美觀不統(tǒng)一、易出錯(cuò)等弊端。因此,如果能開發(fā)一個(gè)程序自動(dòng)去調(diào)用Excel文檔中的學(xué)生信息,并自動(dòng)打印到學(xué)生證上,將大大提高工作效率,同時(shí)學(xué)生證也將更加美觀整潔。該文將詳細(xì)闡述利用Delphi技術(shù)來(lái)解決學(xué)生證的自動(dòng)打印問(wèn)題。

1 Delphi與ADO技術(shù)

ADO (ActiveX Data Objects) 是一個(gè)用于訪問(wèn)數(shù)據(jù)源的COM組件。它為編程語(yǔ)言與統(tǒng)一數(shù)據(jù)訪問(wèn)方式OLE DB之間建立了一個(gè)中間層,用以實(shí)現(xiàn)對(duì)各種數(shù)據(jù)庫(kù)的數(shù)據(jù)訪問(wèn)。ADO提供了很多對(duì)象用于實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的連接與調(diào)用等操作,最重要的三個(gè)對(duì)象為數(shù)據(jù)庫(kù)連接對(duì)象Connection, 記錄集合對(duì)象Recordset和SQL命令對(duì)象Command。

Delphi 擁有一個(gè)可視化的集成開發(fā)環(huán)境(IDE),采用面向?qū)ο蟮木幊陶Z(yǔ)言O(shè)bjectPascal和基于部件的開發(fā)結(jié)構(gòu)框架。在Delphi眾多的優(yōu)勢(shì)當(dāng)中,它在數(shù)據(jù)庫(kù)方面的特長(zhǎng)顯得尤為突出,適應(yīng)多種數(shù)據(jù)庫(kù)結(jié)構(gòu)、高效率的數(shù)據(jù)庫(kù)管理系統(tǒng)、最新的數(shù)據(jù)分析手段等。在數(shù)據(jù)庫(kù)調(diào)用方面,Delphi完全支持ADO數(shù)據(jù)訪問(wèn)技術(shù),采用一套完整的ADO組件實(shí)現(xiàn)對(duì)ADO對(duì)象的封裝與調(diào)用。

1.1 ADO連接組件TADOConnection

TADOConnection組件用于建立與ADO數(shù)據(jù)存儲(chǔ)的連接,其中最主要的屬性為ConnectionString屬性,用于指明數(shù)據(jù)源驅(qū)動(dòng)、數(shù)據(jù)庫(kù)文件和登錄用戶及密碼等數(shù)據(jù)庫(kù)連接信息。

1.2 ADO數(shù)據(jù)操縱組件TADODataSet、TADOTable、TADOQuery

三個(gè)組件都可以通過(guò)TADOConnection組件或直接設(shè)置其ConnectionString屬性建立數(shù)據(jù)連接,然后通過(guò)調(diào)用執(zhí)行SQL語(yǔ)句和存儲(chǔ)過(guò)程來(lái)操縱數(shù)據(jù)庫(kù)表。三者之間,TADODataSet組件功能最強(qiáng)大,它封裝了TTable、TQuery和TStoredProc等組件所有基于BDE程序的功能。TADOTable組件主要實(shí)現(xiàn)對(duì)單個(gè)數(shù)據(jù)庫(kù)表的獲取與操作。TADOQuery組件的使用最為靈活,通過(guò)執(zhí)行SQL語(yǔ)句調(diào)用與操縱各個(gè)數(shù)據(jù)庫(kù)表中的數(shù)據(jù)。

1.3 ADO數(shù)據(jù)集的綁定與顯示

通過(guò)ADO操縱組件執(zhí)行數(shù)據(jù)查詢(select)操作后會(huì)返回相應(yīng)的數(shù)據(jù)集合。TDataSource數(shù)據(jù)源組件用于綁定由ADO操縱組件返回的數(shù)據(jù)集,并做為TDBGrid、TDBNavigator等數(shù)據(jù)顯示組件的數(shù)據(jù)源。通過(guò)圖1可直觀反映各個(gè)組件之間的關(guān)系。

圖1 ADO組件關(guān)系圖

圖1中,在ADO數(shù)據(jù)操縱組件部分,該文選用了TADOQuery組件,該組件功能齊全、使用靈活。

2 Delphi與Excel的互連

Excel是目前最常用的電子表格處理軟件,功能強(qiáng)大、使用方便。除了具備數(shù)據(jù)排版、計(jì)算處理、統(tǒng)計(jì)分析等功能外,Excel采用關(guān)系型數(shù)據(jù)庫(kù)的方式對(duì)數(shù)據(jù)進(jìn)行組織與管理。這使得Delphi通過(guò)ADO連接組件TADOConnection與Excel進(jìn)行互連成為可能。

以下為TADOConnection組件連接Excel時(shí)所需要設(shè)置的ConnectionString屬性的信息。

Provider=Microsoft.Jet.OLEDB.4.0;

Data Source=D:\xxxx.xls;

Extended Properties=Excel 8.0;

Persist Security Info=False

其中,Provider屬性用于指明數(shù)據(jù)庫(kù)驅(qū)動(dòng)。Data Source屬性用于指明Excel文件所在位置以及名稱。Extended Properties屬性用于指明所連接的目標(biāo)為Excel文件。

3 Delphi打印技術(shù)

Delphi自帶兩款打印控件QuickReport和Rave。QuickReport是一款分欄報(bào)表生成器,因其功能有限,在Delphi 7的標(biāo)準(zhǔn)控件面板中已經(jīng)被Rave報(bào)表控件取代,Rave報(bào)表控件是一個(gè)可視化的報(bào)表設(shè)計(jì)工具,提供專門的報(bào)表制作工具Rave Designer。

然而,該文將用另一種方式來(lái)實(shí)現(xiàn)Delphi的打印,即將數(shù)據(jù)傳送到Excel報(bào)表模板文件中,再調(diào)用Excel打印方法來(lái)實(shí)現(xiàn)信息的打印。此種方法,利用Excel強(qiáng)大的排版功能來(lái)設(shè)計(jì)報(bào)表,真正實(shí)現(xiàn)報(bào)表設(shè)計(jì)與程序功能的完全分離,便于報(bào)表的修改。具體操作流程如下:

1)使用Excel制作報(bào)表模板文件。

2)通過(guò)ComObj單元的CreateOleObject函數(shù)建立Excel應(yīng)用程序?qū)ο?,并與報(bào)表模板文件進(jìn)行綁定。關(guān)鍵代碼如下:

Eclapp:=createoleobject('Excel.Application');

Eclapp.WorkBooks.Open(getcurrentdir+'\報(bào)表模板.xls' );

3)通過(guò)Eclapp對(duì)象,將數(shù)據(jù)輸送到Excel報(bào)表模板指定的單元格內(nèi),再調(diào)用Excel打印功能進(jìn)行打印。

調(diào)用打印功能代碼為:Eclapp.ActiveSheet.PrintOut;

4 自動(dòng)打印程序的實(shí)現(xiàn)

4.1 界面的設(shè)計(jì)

程序的界面如圖2所示,上方用于選擇學(xué)生錄取名單所在的Excel文件,點(diǎn)擊“提取數(shù)據(jù)”按鈕后會(huì)在左邊框中顯示所有的專業(yè)信息,點(diǎn)擊專業(yè)名稱后,會(huì)在右邊框中顯示該專業(yè)對(duì)應(yīng)的學(xué)生列表。在專業(yè)信息列表中單擊右鍵可以選擇打印整個(gè)專業(yè)的學(xué)生證,在學(xué)生列表中單擊右鍵可以選擇打印某個(gè)學(xué)生的學(xué)生證。

圖2 學(xué)生證打印程序的界面

4.2 主要組件及設(shè)置

程序的主要組件及設(shè)置如表1所示。

表1 主要組件與設(shè)置信息列表

4.3 關(guān)鍵代碼

4.3.1 提取錄取學(xué)生名單Excel文檔數(shù)據(jù)的代碼

MyDM.ADOConnEXCEL.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source= ' +trim(edit1.Text)+ '; Extended Properties= Excel 8.0; Persist Security Info=False';

with MyDM.ADOQExTable1 do

begin

close;

sql.Clear;

sql.Add('select distinct 專業(yè) from [sheet1$]');

open;

end;

4.3.2 打印單個(gè)學(xué)生證代碼

use comObj,excel2000; //包括必要有控件單元

procedure TF_dyxsz.N1Click(Sender: TObject);

var

Eclapp:variant;

begin

Eclapp := createoleobject('Excel.Application');

Eclapp.WorkBooks.Open('d:\xueshengzheng.xls' );//綁定學(xué)生證報(bào)表模板文件。

Eclapp.WorkSheets[1].Activate; //設(shè)置活動(dòng)工作表:

//以下為將數(shù)據(jù)輸入到Excel報(bào)表模板相應(yīng)的單元格內(nèi)。

Eclapp.Range['B1'].Select; Eclapp.ActiveCell.FormulaR1C1:=trim(MyDM.ADOQExTable2.FieldValues['姓名']);

……

……

Eclapp.Range['G1'].Select; Eclapp.ActiveCell.FormulaR1C1:=trim(MyDM.ADOQExTable2.FieldValues['學(xué)號(hào)']);

eclapp.ActiveSheet.PrintOut; //打印

eclapp.ActiveWorkBook.Saved := True; // 放棄存盤:

eclapp.WorkBooks.Close; // 關(guān)閉工作簿:

eclapp.Quit; //退出 Excel:

end;

5 總結(jié)

綜上所述,本程序通過(guò)巧妙利用Delphi的ADO組件實(shí)現(xiàn)對(duì)“錄取學(xué)生名單”Excel文檔數(shù)據(jù)的調(diào)用,再通過(guò)ComObj單元的接口函數(shù)實(shí)現(xiàn)將學(xué)生數(shù)據(jù)輸入到學(xué)生證報(bào)表Excel模板中,然后調(diào)用Excel打印功能進(jìn)行打印。很好的解決了電大學(xué)生證自動(dòng)打印問(wèn)題,目前本程序已經(jīng)在汕尾市電大投入使用,大大提高了工作效率與學(xué)生證美觀度。

參考文獻(xiàn):

[1] 沈才梁.Delphi 7.0程序設(shè)計(jì)教程[M].北京:北京交通大學(xué)出版社,2007:89-154.

[2] 余永武.在Delphi編程中利用Excel實(shí)現(xiàn)動(dòng)態(tài)報(bào)表[J].安慶師范學(xué)院學(xué)報(bào),2011,17(2):24-25.

[3] 韋偉.Delphi中利用ADO實(shí)現(xiàn)Excel數(shù)據(jù)導(dǎo)入[J].電子商務(wù),2013(5):41-42.

猜你喜歡
學(xué)生證
真假難辨
湯還是熱的
學(xué)生證照片可以這樣拍
網(wǎng)售假證
手機(jī)學(xué)生證
邓州市| 绵竹市| 积石山| 安达市| 孙吴县| 阜平县| 井研县| 饶河县| 琼海市| 绍兴市| 公主岭市| 湖州市| 吴川市| 岳普湖县| 老河口市| 六枝特区| 徐水县| 陈巴尔虎旗| 阿鲁科尔沁旗| 遂平县| 株洲县| 项城市| 信丰县| 铜陵市| 石台县| 龙游县| 体育| 镇康县| 饶平县| 霞浦县| 山东| 雷州市| 杭锦后旗| 景谷| 辉县市| 观塘区| 益阳市| 金平| 岳西县| 吉安市| 郴州市|