999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

VB中巧用Excel實(shí)現(xiàn)報(bào)表設(shè)計(jì)

2008-12-31 00:00:00張玉青
考試周刊 2008年38期

摘要: 本文結(jié)合實(shí)例介紹了在VB中利用Excel實(shí)現(xiàn)復(fù)制報(bào)表的設(shè)計(jì)的方法,該方法把VB強(qiáng)大數(shù)據(jù)庫管理與Excel靈活的報(bào)表設(shè)計(jì)有機(jī)結(jié)合起來,簡化了編程,提高了程序的便利性。

關(guān)鍵詞: Visual Basic Excel 報(bào)表

引言

在數(shù)據(jù)庫應(yīng)用中,數(shù)據(jù)報(bào)表是非常重要的部分,Visual Basic中的數(shù)據(jù)報(bào)表器可以很方便地創(chuàng)建數(shù)據(jù)報(bào)表,但由數(shù)據(jù)報(bào)表器設(shè)計(jì)的表格樣式單一,功能較少。微軟公司的Excel軟件想必大家都很熟悉,它那強(qiáng)大的報(bào)表設(shè)計(jì)功能和簡單的操作界面,給大家留下了很深的印象。若能把VB中的數(shù)據(jù)輸出至Excel格式的報(bào)表中,使得VB的數(shù)據(jù)庫管理功能與Excel的報(bào)表設(shè)計(jì)功能結(jié)合起來,將大大方便普通用戶的使用。本文借助一個(gè)實(shí)例詳細(xì)介紹VB中如何利用Excel進(jìn)行報(bào)表設(shè)計(jì)的方法。

1.Excel對(duì)象

借助Excel對(duì)象,可以很方便地在VB數(shù)據(jù)庫程序中生成Excel報(bào)表。應(yīng)用程序的最終用戶在Excel環(huán)境中對(duì)報(bào)表做進(jìn)一步的處理,如格式修改、打印預(yù)覽、打印及保存等。

Excel對(duì)象封裝了Microsoft Excel的全部對(duì)象,我們主要使用其中的五種對(duì)象,詳細(xì)介紹如下。

Application對(duì)象:表示Excel應(yīng)用對(duì)象,可以控制Excel應(yīng)用程序的外觀或功能[1],是訪問Excel其他對(duì)象的切入點(diǎn)。

Workbook對(duì)象:表示Excel中的工作簿,即對(duì)應(yīng)一個(gè)Excel文件,可以實(shí)現(xiàn)對(duì)Excel工作簿的各種控制[1]。

Worksheet對(duì)象:表示Excel中的工作表,可以實(shí)現(xiàn)對(duì)Excel工作表的各種控制[1]。

Range對(duì)象:表示Excel中的區(qū)間,例如可以代表Excel中的某一單元格、某一行、某一列、某一選定區(qū)域[1]。

Cells對(duì)象:表示Excel中的一個(gè)單元格[2],通過該對(duì)象讀取Excel中的數(shù)據(jù)或?qū)?shù)據(jù)寫入Excel中。

2.操作步驟

在VB中借助Excel生成報(bào)表,需完成如下工作:

(1)在Excel中制作報(bào)表模板,設(shè)計(jì)報(bào)表標(biāo)題、表頭的樣式,包括字體字號(hào)、邊框等等。生成報(bào)表的過程實(shí)質(zhì)上就是拷貝該模板并在新文件中填入具體的數(shù)據(jù)。

(2)在VB中引用Excel對(duì)象[1]。首先在工程中選擇“工程”→“引用”,并選擇“Microsoft Excel 11.0 Object Library”。

(3)在工程中使用New關(guān)鍵字聲明Excel對(duì)象[1]。例如語句Dim n_xls As New Excel.Application聲明了Excel對(duì)象n_xls。

(4)使用Excel對(duì)象的屬性和方法設(shè)計(jì)報(bào)表[1]。例如語句.Cells(1,1)=″常州技師學(xué)院″實(shí)現(xiàn)在A1單元格中寫入數(shù)據(jù)。

(5)保存文件,釋放Excel對(duì)象。例如語句n_xls.Quit釋放Excel對(duì)象。

3.實(shí)例

下面以常州技師學(xué)院招生系統(tǒng)中新生資料(分班)報(bào)表的設(shè)計(jì)為例,詳細(xì)介紹VB中巧用Excel實(shí)現(xiàn)報(bào)表設(shè)計(jì)的過程。本實(shí)例生成新生資料總表和分表,可實(shí)現(xiàn)自動(dòng)分頁功能,所有數(shù)據(jù)一次打印,工作人員無需守候在打印機(jī)旁,分表中為一個(gè)班級(jí)新生資料,便于日后單個(gè)班級(jí)資料的打印工作。

首先在Excel中制作如圖一的模板文件“新生資料(分班).xls”,保存在專用文件夾data中。

下面就以圖一為例,說明在VB中是實(shí)何利用Excel實(shí)現(xiàn)報(bào)表設(shè)計(jì)的,窗體中的重點(diǎn)部分程序代碼如下:

Dim gzApp As New Excel.Application″聲明Excel對(duì)象gzApp

Dim gzWorkbook As New Excel.Workbook″聲明工作簿對(duì)象gzWorkbook

Dim gzWorkSheet As New Excel.Worksheet″聲明工作表對(duì)象gzWorkSheet

Dim range1 As Excel.Range″聲明區(qū)間對(duì)象range1

Dim fname As String″fname變量用來存放生成的文件名,包括年份及生成日期

fname=″臨時(shí)″ Trim(Str(Year(Date)))″新生資料(分班)_″ Date

″拷貝模板文件得到新的報(bào)表文件

FileCopy App.Path+″\data\新生資料(分班).xls″,App.Path+″\data\″ fname ″.xls″

Set gzWorkbook=gzApp.Workbooks.Open(App.Path+″\data\″ fname ″.xls″,F(xiàn)alse,True)

Dim i As Integer″新增各班級(jí)工作表,重命名為班級(jí)名稱,班級(jí)名稱在列表List2中

Set gzWorkSheet=Sheets(1)

For i=1 To List2.ListCount

gzWorkSheet.Copy after:=Sheets(i)

Next

For i=0 To List2.ListCount-1

Set gzWorkSheet=Sheets(i+2)

gzWorkSheet.Select

gzWorkSheet.Name=List2.List(i)

Next

″存放班級(jí)總?cè)藬?shù),在總表中起始位置及結(jié)束行數(shù)

Dim bj_number(100)As Integer,bj_start(100)As Integer,bj_end(100)As Integer

″填寫總表數(shù)據(jù)

Set gzWorkSheet=Sheets(1)

gzWorkSheet.Activate

With gzWorkSheet

……

″實(shí)現(xiàn)自動(dòng)分頁,變量hs表示當(dāng)前的行數(shù)

hs_char=″A″ Trim(Str(hs+1))

gzApp.ActiveSheet.Range(hs_char).Select

gzWorkSheet.HPageBreaks.Add Before:=ActiveCell

″表頭格式的復(fù)制及內(nèi)容的填寫

gzApp.ActiveSheet.Range(Cells(1,1),Cells(3,8)).Copy_

Destination:=.Range(Cells(hs+1,1),Cells(hs+3,8))

.Cells(hs-2,1)=Trim(Str(Year(Date)))″年常州技師學(xué)院新生資料(分班)表″

.Cells(hs-1,2)=List2.List(k)

.Cells(hs-1,6)=rs_temp″班級(jí)人數(shù)、男生人數(shù)和女生人數(shù)信息

.Cells(hs-1,8)=″第″ bj_page_n ″頁″

……

″數(shù)據(jù)行的格式復(fù)制

gzApp.ActiveSheet.Range(Cells(4,1),Cells(4,8)).Copy_

Destination:=.Range(Cells(hs,1),Cells(hs,8))

hs_char=″A″Trim(Str(hs))″:H″ Trim(Str(hs))

Set range1=gzApp.ActiveSheet.Range(hs_char)

range1.ClearContents

Set range1=Nothing

″寫入數(shù)據(jù)

.Cells(hs,1)=Trim(rs.Fields(″order_no″))

.Cells(hs,2)=Trim(rs.Fields(″xm″))

.Cells(hs,3)=Trim(rs.Fields(″xb″))

.Cells(hs,4)=Trim(rs.Fields(″byxx″))

.Cells(hs,5)=Trim(rs.Fields(″csny″))

If(rs.Fields(″is_zs″))Then.Cells(hs,6)=“是”

.Cells(hs,7)=Trim(rs.Fields(″lsr″))

.Cells(hs,8)=Trim(rs.Fields(″addr″))

……

End With

Dim gzWorkSheet_n As Excel.Worksheet″從總表中拷貝數(shù)據(jù)至各分表

Dim myrange1 As Range,myrange2 As Range

For k=0 To List2.ListCount-1

Set gzWorkSheet=Sheets(1)

Set gzWorkSheet_n=Sheets(k+2)

gzWorkSheet.Activate

Set myrange1=gzApp.ActiveSheet.Range(Cells(bj_start(k),1),Cells(bj_end(k),8))

myrange1.Copy

gzWorkSheet_n.Activate

myrange2.Activate

myrange2.PasteSpecial

Clipboard.Clear

Next

For k=0 To List2.ListCount-1″各分表分頁,每頁42行

If bj_number(k)>42-3 Then

Set gzWorkSheet_n=Sheets(k+2)

gzWorkSheet_n.Activate

For i=1 To(bj_end(k)-bj_start(k))\42

hs_char=“A” Trim(Str(42*i+1))

gzApp.ActiveSheet.Range(hs_char).Select

gzWorkSheet_n.HPageBreaks.Add Before:=ActiveCell

Next

End If

Next

″刪除臨時(shí)文件,保存文件,釋放Excel對(duì)象

Kill App.Path+″\data\″ fname ″.xls″

fname=Mid(fname,3)

gzWorkbook.SaveAs App.Path+″\data\″ fname ″.xls″

gzWorkbook.Close:gzApp.Quit

4.總結(jié)

在VB中利用Excel實(shí)現(xiàn)報(bào)表設(shè)計(jì),不僅減少了報(bào)表設(shè)計(jì)的工作量,還使生成的報(bào)表擺脫了以往簡單死板的感覺,取而代之的是功能齊全、靈活多變的風(fēng)格。這種方法既利用了Visual Basic強(qiáng)大的數(shù)據(jù)庫管理功能,又利用了Excel靈活的報(bào)表設(shè)計(jì)功能,互相配合,取長補(bǔ)短。

參考文獻(xiàn):

[1]明日科技.Visual Basic開發(fā)技術(shù)大全.北京:人民郵電出版社,第1版.

[2]劉丹丹,胡彩虹,張成才.基于Excel和數(shù)據(jù)庫在VB中制作報(bào)表.氣象與環(huán)境科學(xué),2007,(8):90-93.

[3]王瑾瑜,王曉利,恩和門德,杜偉.基于VB和Excel的報(bào)表設(shè)計(jì)及打印.內(nèi)蒙古電大學(xué)刊,2006,(4):50-51.

[4]陳軍,李凌云.利用VB實(shí)現(xiàn)復(fù)雜數(shù)據(jù)報(bào)表的輸出.煙臺(tái)師范學(xué)院學(xué)報(bào),2004,20,(1):27-30.

[5]馮詩齊.用Excel生成VB應(yīng)用軟件的報(bào)表.電腦學(xué)習(xí),2004,(3):52-54.

主站蜘蛛池模板: 国产精品污视频| 亚洲热线99精品视频| 中文字幕在线看| 成人免费午夜视频| 久无码久无码av无码| 精品综合久久久久久97超人| 国产精品偷伦在线观看| 国产精品永久不卡免费视频 | 中国国产A一级毛片| 欧美翘臀一区二区三区 | 亚洲精品无码日韩国产不卡| 亚洲无码熟妇人妻AV在线| 久久久久亚洲精品成人网| 国产av一码二码三码无码| 日韩精品一区二区深田咏美| 国产在线观看第二页| 国产在线自乱拍播放| 国模粉嫩小泬视频在线观看| 欧美色视频日本| 欧美日韩精品在线播放| 国产精品极品美女自在线网站| 国产AV无码专区亚洲A∨毛片| 欧美高清国产| 999精品免费视频| 99久久国产综合精品2023| 欧美国产综合色视频| 亚洲看片网| 9966国产精品视频| 99久久精品视香蕉蕉| 国产在线一区视频| 91亚洲视频下载| 亚洲精品自产拍在线观看APP| 久久久久亚洲Av片无码观看| 人妻无码中文字幕第一区| 亚洲国产精品国自产拍A| 欧美v在线| 成人精品免费视频| 在线观看国产精品第一区免费 | av在线无码浏览| 麻豆国产在线观看一区二区| 99色亚洲国产精品11p| 色偷偷一区二区三区| 国产精品七七在线播放| 亚洲天堂日本| 婷婷六月激情综合一区| 手机在线看片不卡中文字幕| 深爱婷婷激情网| 亚洲美女一区二区三区| 国产欧美自拍视频| 女人一级毛片| 日韩国产黄色网站| 国产欧美日本在线观看| 国产成人禁片在线观看| 日韩在线观看网站| 国产精品密蕾丝视频| 日韩精品一区二区深田咏美| 丁香亚洲综合五月天婷婷| 日本国产精品| 日韩一级二级三级| 久久国产精品麻豆系列| 99精品国产自在现线观看| 国产精品美女在线| 婷婷午夜天| 精品国产电影久久九九| 亚洲综合网在线观看| 久久91精品牛牛| 高清久久精品亚洲日韩Av| 最新国产你懂的在线网址| 制服无码网站| 国产91九色在线播放| 欧美在线导航| 在线播放真实国产乱子伦| 青青青国产视频| 91亚瑟视频| 国产精品对白刺激| 久久综合结合久久狠狠狠97色| 成人精品免费视频| 欧美激情网址| 免费高清a毛片| 免费人成网站在线观看欧美| 国产精品亚洲一区二区三区z| 欧美色视频在线|