国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

用VB創(chuàng)建復(fù)雜表格

2019-11-18 17:37:37
字體:
供稿:網(wǎng)友
----數(shù)據(jù)庫管理系統(tǒng)的開發(fā)人員經(jīng)常感嘆的一個問題就是:我們中國人的報表太復(fù)雜了!無規(guī)則、嵌套、斜線、交叉線等歷來都是困撓開發(fā)人員的最大問題。設(shè)計一個數(shù)據(jù)庫固然有一定的技巧,設(shè)計數(shù)據(jù)操作也固然需要一定的邏輯分析能力,但這些問題對一般的開發(fā)人員來說應(yīng)該是不成為問題的。用戶可是不管你采用了多么靈活的算法多么方便的操作,他們最感興趣的是最后他們出來的報表如何漂亮,出報表的操作如何簡單(最好是一個按鈕解決所有的問題)。筆者在開發(fā)數(shù)據(jù)庫管理系統(tǒng)方面也稍有些經(jīng)驗(yàn),從FoxPRo、Delphi、PowerBuilder一直到現(xiàn)在用的VB,都遇到過設(shè)計打印報表的問題,這些軟件在設(shè)計報表的過程中可謂各有千秋,我這里不一一細(xì)說。我在這里只向大家介紹一種我迄今為止最為滿意的一種設(shè)計打印報表的方法:利用VB操作Excel來生成復(fù)雜的報表。

----一.用VB創(chuàng)建外部EXCEL對象

----大多數(shù)大型ActiveX-enabled應(yīng)用程序和其它ActiveX部件,在它們的對象層次中都提供了一個頂層外部可創(chuàng)建對象。該對象提供了對該層次中其它對象的訪問,并且還提供對整個應(yīng)用程序起作用的方法和屬性。

----例如,每個MicrosoftOffice應(yīng)用程序提供一個頂層application對象。下面語句顯示了對MicrosoftExcel的Application對象的引用:

DimxlAppAsExcel.Application
SetxlApp=NewExcel.Application

----然后,可以用這些變量來訪問在EXCEL應(yīng)用程序中的從屬對象、以及這些對象的屬性和方法。例如:

SetxlApp=CreateObject("Excel.Application")
‘激活EXCEL應(yīng)用程序
xlApp.Visible=False‘隱藏EXCEL應(yīng)用程序窗口
SetxlBook=xlApp.Workbooks.Open(strDestination)
‘打開工作簿,strDestination為一個EXCEL報表文件
SetxlSheet=xlBook.Worksheets(1)
‘設(shè)定工作表

----二.用EXCEL97設(shè)計報表的模版文件

----EXCEL97是一個非常優(yōu)秀的創(chuàng)建報表的工具。它提供的單元格任意合并、拆分和繪圖功能基本上能夠滿足設(shè)計所有復(fù)雜報表的需求。它對任意一個單元格的格式隨意控制,更為隨心所欲地設(shè)計報表提供了強(qiáng)大的支持。

----根據(jù)用戶提供的報表,我們可以很快在EXCEL里生成模版文件。所謂生成模版文件只是為了滿足用戶多方面的需求而設(shè)計的。也是為了適合報表以后的更改而做的一點(diǎn)預(yù)備工作。例如用戶需要打印幾百張職工履歷表,但其格式都是一致的,并且隨著時間和實(shí)際情況的變化,表格格式有可能需要改變,我們設(shè)計一個模版文件顯然可以“以不變應(yīng)萬變”了。

----生成工作表時我們應(yīng)當(dāng)記錄下要填充內(nèi)容的單元格編號和該單元格內(nèi)要填充的數(shù)據(jù)字段。這樣形成一個表格,在寫程序時一目了然。如:

Cell(4,2)職工姓名Cell(6,6)畢業(yè)學(xué)校
Cell(4,4)職工性別Cell(6,7)所學(xué)專業(yè)
Cell(4,6)職工民族Cell(6,9)工作時間
(表一)

----在程序里我們當(dāng)然不要對模版文件進(jìn)行操作了,我們只需要對模版文件的一個拷貝進(jìn)行操作就行(這也是我們設(shè)計模版文件的一個目的和好處)。如下面的例子:

DimstrSource,strDestinationAsString
strSource=App.Path&"/Excels/RegisterFee.xls" 
‘RegisterFee.xls就是一個模版文件
strDestination=App.Path&"/Excels/Temp.xls" 
FileCopystrSource,strDestination
‘將模版文件拷貝到一個臨時文件

----三.生成工作表內(nèi)容

----有了上述兩步工作的鋪墊,我們下面接著就只要根據(jù)(表一)的格式給各單元格賦值了。如:

 datPrimaryRS.Recordset.MoveFirst
‘datPrimaryRS為Data控件
  IfIsNull(datPrimaryRS.Recordset!姓名)=FalseThen
  xlSheet.Cells(4,2)=datPrimaryRS.Recordset!姓名
  EndIf
  IfIsNull(datPrimaryRS.Recordset!性別)=FalseThen
  xlSheet.Cells(4,4)=datPrimaryRS.Recordset!性別
  EndIf
  IfIsNull(datPrimaryRS.Recordset!民族)=FalseThen
  xlSheet.Cells(4,6)=datPrimaryRS.Recordset!民族
  EndIf
………………

----四.打印報表

----生成了工作表后,就可以對EXCEL發(fā)出打印指令了。

----注意在執(zhí)行打印操作之前應(yīng)該對EXCEL臨時文件執(zhí)行一次保存操作,以免在退出應(yīng)用程序后EXCEL還提示用戶是否保存已修改的文件,讓用戶覺得莫名其妙。如下語句:

xlBook.Save ‘保存文件
  xlSheet.PrintOut ‘執(zhí)行打印
  xlApp.Quit ‘退出EXCEL

----至此讀者應(yīng)該看到,我們設(shè)計的報表打印是通過EXCEL程序來后臺實(shí)現(xiàn)的。用戶根本看不到具體過程,他們只看到一張張漂亮的報表輕易地被打印出來了。->


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 巴彦淖尔市| 什邡市| 宜君县| 中山市| 潞西市| 梁平县| 阿鲁科尔沁旗| 扶沟县| 南投县| 三明市| 封开县| 米易县| 龙口市| 双城市| 娱乐| 克拉玛依市| 石台县| 闻喜县| 莫力| 开封县| 永年县| 合山市| 闸北区| 六枝特区| 隆回县| 格尔木市| 通道| 原平市| 洪雅县| 东台市| 桐柏县| 梁平县| 信丰县| 怀来县| 元阳县| 根河市| 晋城| 金门县| 涿鹿县| 元朗区| 泰顺县|