幸运飞艇投注平台app
全國服務熱線:0597-2297794 24小時咨詢:15080281944 15080287989
設為首頁加入收藏聯系我們

利用VB設計打印復雜報表

來源:互聯網   發布時間:2013/12/27 21:55:43     閱讀數:652

  數據庫管理系統的開發人員經常感嘆的一個問題就是:我們中國人的報表太復雜了!無規則、嵌套、斜線、交叉線等歷來都是困撓開發人員的最大問題。設計一個數據庫固然有一定的技巧,設計數據操作也固然需要一定的邏輯分析能力,但這些問題對一般的開發人員來說應該是不成為問題的。用戶可是不管你采用了多么靈活的算法多么方便的操作,他們最感興趣的是最后他們出來的報表如何漂亮,出報表的操作如何簡單(最好是一個按鈕解決所有的問題)。筆者在開發數據庫管理系統方面也稍有些經驗,從FoxPro、Delphi、PowerBuilder一直到現在用的VB,都遇到過設計打印報表的問題,這些軟件在設計報表的過程中可謂各有千秋,我這里不一一細說。我在這里只向大家介紹一種我迄今為止最為滿意的一種設計打印報表的方法:利用VB操作EXCEL來生成復雜的報表。  一. 用VB創建外部EXCEL對象  大多數大型 ActiveX-enabled 應用程序和其它 ActiveX 部件,在它們的對象層次中都提供了一個頂層外部可創建對象。該對象提供了對該層次中其它對象的訪問,并且還提供對整個應用程序起作用的方法和屬性。  例如,每個 Microsoft Office 應用程序提供一個頂層 Application 對象。下面語句顯示了對Microsoft Excel的 Application 對象的引用:  Dim xlApp As Excel.Application  Set xlApp = New Excel.Application  —— 然后,可以用這些變量來訪問在EXCEL應用程序中的從屬對象、以及這些對象的屬性和方法。例如:  Set xlApp = CreateObject("Excel.Application")  ‘激活EXCEL應用程序  xlApp.Visible = False ‘隱藏EXCEL應用程序窗口  Set xlBook = xlApp.Workbooks.Open(strDestination)  ‘打開工作簿,strDestination為一個EXCEL報表文件  Set xlSheet = xlBook.Worksheets(1)  ‘設定工作表  —— 二. 用EXCEL 97設計報表的模版文件  —— EXCEL 97是一個非常優秀的創建報表的工具。它提供的單元格任意合并、拆分和繪圖功能基本上能夠滿足設計所有復雜報表的需求。它對任意一個單元格的格式隨意控制,更為隨心所欲地設計報表提供了強大的支持。  —— 根據用戶提供的報表,我們可以很快在EXCEL里生成模版文件。所謂生成模版文件只是為了滿足用戶多方面的需求而設計的。也是為了適合報表以后的更改而做的一點預備工作。例如用戶需要打印幾百張職工履歷表,但其格式都是一致的,并且隨著時間和實際情況的變化,表格格式有可能需要改變,我們設計一個模版文件顯然可以“以不變應萬變”了。  —— 生成工作表時我們應當記錄下要填充內容的單元格編號和該單元格內要填充的數據字段。這樣形成一個表格,在寫程序時一目了然。如:  Cell(4,2) 職工姓名 Cell(6,6) 畢業學校  Cell(4,4) 職工性別 Cell(6,7) 所學專業  Cell(4,6) 職工民族 Cell(6,9) 工作時間  (表一)  —— 在程序里我們當然不要對模版文件進行操作了,我們只需要對模版文件的一個拷貝進行操作就行(這也是我們設計模版文件的一個目的和好處)。如下面的例子:  Dim strSource, strDestination As String  strSource = App.Path & "\Excels\RegisterFee.xls"  ‘RegisterFee.xls就是一個模版文件  strDestination = App.Path & "\Excels\Temp.xls"  FileCopy strSource, strDestination  ‘將模版文件拷貝到一個臨時文件  —— 三. 生成工作表內容  —— 有了上述兩步工作的鋪墊,我們下面接著就只要根據(表一)的格式給各單元格賦值了。如:  datPrimaryRS.Recordset.MoveFirst  ‘datPrimaryRS為Data控件  If IsNull(datPrimaryRS.Recordset!姓名) = False 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  ………………  四. 打印報表  生成了工作表后,就可以對EXCEL發出打印指令了。  注意在執行打印操作之前應該對EXCEL臨時文件執行一次保存操作,以免在退出應用程序后EXCEL還提示用戶是否保存已修改的文件,讓用戶覺得莫名其妙。如下語句:  xlBook.Save ‘保存文件  xlSheet.PrintOut ‘執行打印  xlApp.Quit ‘退出EXCEL  至此讀者應該看到,我們設計的報表打印是通過EXCEL程序來后臺實現的。用戶根本看不到具體過程,他們只看到一張張漂亮的報表輕易地被打印出來了。

 如果您覺得此文對您有啟發或者幫助,可以花3秒鐘收藏到QQ空間。平時注意多收集,用時不會干著急!

[您可能感興趣的文章]
最新案例
網站建設資訊
  1. [資訊]Google Adsense ?
  2. [資訊]如何防止google adse?
  3. [資訊]使你的網站更專業--談網站優化?
  4. [資訊]優化你的站點,讓它加載的再快一?
  5. [資訊]網站建設:提高網站訪問量的策略?
  6. [資訊]揭開虛擬主機供應商的面紗?
SEO常見問題解答
  1. [SEO]什么是ALT屬性?
  2. [SEO]什么是鏈接錨文本?
  3. [SEO]什么是動態頁面?
  4. [SEO]HTTP狀態碼是什么意思??
  5. [SEO]鏈接養殖場?
  6. [SEO]首選域?
點擊立刻咨詢
幸运飞艇投注平台app 新时时彩购彩经验 重庆时时自由的百科a 成都快乐12预测号码 永利741 黑龙江福彩20选8开奖 北京赛车pk外挂 彩票托被识破为什么不删微信 新加坡2分彩投注平台 MG电子游戏技巧分享 五分快三免费计划软件app