利用VB設(shè)計(jì)打印復(fù)雜報(bào)表_第1頁(yè)
利用VB設(shè)計(jì)打印復(fù)雜報(bào)表_第2頁(yè)
利用VB設(shè)計(jì)打印復(fù)雜報(bào)表_第3頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、利用vb 設(shè)計(jì)打印復(fù)雜報(bào)表數(shù)據(jù)庫(kù)管理系統(tǒng)的開(kāi)發(fā)人員經(jīng)常感嘆的一個(gè)問(wèn)題就是:我們中國(guó)人的報(bào)表太復(fù)雜了!無(wú)規(guī)則、嵌套、斜線、交叉線等歷來(lái)都是困撓開(kāi)發(fā)人員的最大問(wèn)題。設(shè)計(jì)一個(gè)數(shù)據(jù)庫(kù)固然有一定的技巧,設(shè)計(jì)數(shù)據(jù)操作也固然需要一定的邏輯分析能力,但這些問(wèn)題對(duì)一般的開(kāi)發(fā)人員來(lái)說(shuō)應(yīng)該是不成為問(wèn)題的。用戶(hù)可是不管你采用了多么靈活的算法多么方便的操作,他們最感興趣的是最后他們出來(lái)的報(bào)表如何漂亮,出報(bào)表的操作如何簡(jiǎn)單(最好是一個(gè)按鈕解決所有的問(wèn)題)。筆者在開(kāi)發(fā)數(shù)據(jù)庫(kù)管理系統(tǒng)方面也稍有些經(jīng)驗(yàn),從 foxpro、delphi、powerbuilder一直到現(xiàn)在用的 vb,都遇到過(guò)設(shè)計(jì)打印報(bào)表的問(wèn)題,這些軟件在設(shè)計(jì)報(bào)表的

2、過(guò)程中可謂各有千秋,我這里不一一細(xì)說(shuō)。我在這里只向大家介紹一種我迄今為止最為滿(mǎn)意的一種設(shè)計(jì)打印報(bào)表的方法:利用 vb操作excel 來(lái)生成復(fù)雜的報(bào)表。一. 用vb 創(chuàng)建外部 excel 對(duì)象 大多數(shù)大型 activex-enabled 應(yīng)用程序和其它 activex 部件,在它們的對(duì)象層次中都提供了一個(gè)頂層外部可創(chuàng)建對(duì)象。該對(duì)象提供了對(duì)該層次中其它對(duì)象的訪問(wèn),并且還提供對(duì)整個(gè)應(yīng)用程序起作用的方法和屬性。 例如,每個(gè) microsoft office 應(yīng)用程序提供一個(gè)頂層 application對(duì)象。下面語(yǔ)句顯示了對(duì) microsoft excel的 application 對(duì)象的引用: dim

3、 xlapp as excel.application set xlapp = new excel.application 然后,可以用這些變量來(lái)訪問(wèn)在excel 應(yīng)用程序中的從屬對(duì)象、以及這些對(duì)象的屬性和方法。例如: set xlapp = createobject(excel.application) 激活excel 應(yīng)用程序 xlapp.visible = false 隱藏excel 應(yīng)用程序窗口 set xlbook = xlapp.workbooks.open(strdestination) 打開(kāi)工作簿, strdestination為一個(gè)excel 報(bào)表文件 set xlsheet

4、 = xlbook.worksheets(1) 設(shè)定工作表 二. 用excel 97 設(shè)計(jì)報(bào)表的模版文件 excel 97 是一個(gè)非常優(yōu)秀的創(chuàng)建報(bào)表的工具。它提供的單元格任意合并、拆分和繪圖功能基本上能夠滿(mǎn)足設(shè)計(jì)所有復(fù)雜報(bào)表的需求。它對(duì)任意一個(gè)單元格的格式隨意控制,更為隨心所欲地設(shè)計(jì)報(bào)表提供了強(qiáng)大的支持。 根據(jù)用戶(hù)提供的報(bào)表,我們可以很快在excel 里生成模版文件。所謂生成模版文件只是為了滿(mǎn)足用戶(hù)多方面的需求而設(shè)計(jì)的。也是為了適合報(bào)表以后的更改而做的一點(diǎn)預(yù)備工作。例如用戶(hù)需要打印幾百?gòu)埪毠ぢ臍v表,但其格式都是一致的,并且隨著時(shí)間和實(shí)際情況的變化,表格格式有可能需要改變,我們?cè)O(shè)計(jì)一個(gè)模版文件顯

5、然可以“以不變應(yīng)萬(wàn)變”了。 生成工作表時(shí)我們應(yīng)當(dāng)記錄下要填充內(nèi)容的單元格編號(hào)和該單元格內(nèi)要填充的數(shù)據(jù)字段。這樣形成一個(gè)表格,在寫(xiě)程序時(shí)一目了然。如: cell(4,2) 職工姓名 cell(6,6) 畢業(yè)學(xué)校 cell(4,4) 職工性別 cell(6,7) 所學(xué)專(zhuān)業(yè) cell(4,6) 職工民族 cell(6,9) 工作時(shí)間 (表一) 在程序里我們當(dāng)然不要對(duì)模版文件進(jìn)行操作了,我們只需要對(duì)模版文件的一個(gè)拷貝進(jìn)行操作就行(這也是我們?cè)O(shè)計(jì)模版文件的一個(gè)目的和好處)。如下面的例子: dim strsource, strdestination as string strsource = app.pa

6、th & excelsregisterfee.xls registerfee.xls就是一個(gè)模版文件 strdestination = app.path & excelstemp.xls filecopy strsource, strdestination 將模版文件拷貝到一個(gè)臨時(shí)文件 三. 生成工作表內(nèi)容 有了上述兩步工作的鋪墊,我們下面接著就只要根據(jù)(表一)的格式給各單元格賦值了。如: datprimaryrs.recordset.movefirst datprimaryrs為data控件 if isnull(datprimaryrs.recordset!姓名) = fal

7、se then xlsheet.cells(4, 2) = datprimaryrs.recordset!姓名 end if if isnull(datprimaryrs.recordset!性別) = false then xlsheet.cells(4, 4) = datprimaryrs.recordset!性別 end if if isnull(datprimaryrs.recordset!民族) = false then xlsheet.cells(4, 6) = datprimaryrs.recordset!民族 end if 四. 打印報(bào)表 生成了工作表后,就可以對(duì)excel 發(fā)出打印指令了。 注意在執(zhí)行打印操作之前應(yīng)該對(duì)excel 臨時(shí)文件執(zhí)行一次保存操作,以免在退出應(yīng)用程序后 excel 還提示用戶(hù)是否保存已修改的文件,讓用戶(hù)覺(jué)得莫名其妙。如下語(yǔ)句: xlbook.save 保

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論