①報表的概念
這張報表包含了報表的基本元素,即頁眉、頁腳、橫表頭、豎表頭、表頭交叉區、單元格。
頁 眉:位於報表的最上部分。作為報表的描述性信息,概括性的說明報表的名稱、表號、批准機關、批准文號等。
頁 腳:位於報表的最下部分,用於說明報表的其它信息,例如:單位負責人、部門負責人、制表人等信息。
橫表頭:也叫賓欄,位於報表的橫方向的表頭,它是統計的約束條件,也可能是描述信息。對於統計表來說橫表頭是可以分層的,並且上層的條件對它下面各層都起作用。
豎表頭:也叫甲欄,報表豎方向的表頭,它在統計表中與橫表頭起相同的作用,也是統計的約束性條件,也可能是描述性信息。在分層結構中,上層的條件對它下面各層都起作用。
表頭交叉區:在報表的左上角,可以分欄說明報表的橫表頭和豎表頭。
單元格:報表的主體部分。在統計報表中是其相對應橫表頭和豎表頭的兩個條件的統計情況,在查詢表中是橫表頭的查詢信息,也可能是簡單的計算統計結果。單元格內容在新建報表後是空的,要通過統計查詢這一步來填充,在填充後也可以修改。
②Visual Basic中制作報表
Visual Basic中制作報表,通常是用數據環境設計器(Data Environment Designer)與數據報表設計器(Data Report Designer),或者使用第三方產品(如非常有名的Crystal Report)來完成並通過ActiveX控件輸出。但對於大多數程序員來說,設計報表往往他們費盡心思。然而,我們可以有更簡單的方法來滿足他們的要求。由於Visual Basic的可擴展性,使用和融入Office2000的特性,包括Excel是相當方便的。Excel可以用作OLE服務器,向外部輸出某些屬性,方法和事件.Visual Basic可以利用這些功能,實現與Excel的集成。下面,我們來具體闡述一個用VB來創建Excel報表的例子。
③Excel對象
微軟的Excel對象模型包括了128個不同的對象,從矩形,文本框等簡單的對象到透視表,圖表等復雜的對象.下面我們簡單介紹一下其中最重要,也是用得最多的四個對象.
A、Application對象
Application對象處於Excel對象層次結構的頂層,表示Excel自身的運行環境.
B、Workbook對象
Workbook對象直接地處於Application對象的下層,表示一個Excel工作薄文件.
C、Worksheet對象
Worksheet對象包含於Workbook對象,表示一個Excel工作表.
D、Range對象
Range對象包含於Worksheet對象,表示Excel工作表中的一個或多個單元格.
④Access2000的報表解決方案
A、在Excel中做一個模板
在用Visual Basic生成Excel報表之前,應先按照用戶的要求在Excel中做好一個模板,包括頁眉,頁腳,表頭等等。
B、在VB中創建Excel對象,打開Excel文件
和其它的第三方控件一樣,使用之前必須引用或作為部件導入。要在VB中創建和作用Excel對象,就必須先引用Microsoft Excel 9.0 object library。然後我們就可以在VB的編程操作Excel對象了。
關鍵代碼入下:
Dim excelFile As String
excelFile = App.Path & "myReport.xls" 'Excel文件名
'定義Excel的Application對象,Application對象相當於Excel程序
Dim xlApp As Excel.Application
'定義Excel的Workbook對象,Workbook對象相當於Excel文件
Dim xlbook As Excel.Workbook
'定義Excel的Worksheet對象,Worksheet對象相當於Excel文件中的一個表
Dim xlsheet As Excel.Worksheet
'給Application分配內存空間,將其實例化
Set xlApp = New Excel.Application
'創建Application對象
Set xlApp = CreateObject("Excel.Application")
'隱藏被VB打開的Excel程序
xlApp.Visible = False
'打開工作簿,excelFile為一個EXCEL報表文件
Set xlbook = xlApp.Workbooks.Open(excelFile)
'打開Excel工作表
Set xlsheet = xlbook.Worksheets(1)
C、控制Excel工作表,對其進行編輯
如果是通過ADO打開了一個記錄集,想把記錄集中的數據顯示在單元格中,關鍵代碼為:
Do Until rs.EOF
For i = 0 To rs.Fields.Count - 1
xlsheet.Cells(j + 1, i + 1) = rs.Fields(i)
Next
rs.MoveNext
j = j + 1
Loop