基于VB和EXCEL的报表设计及打印
基于VB和EXCEL的報表設計及打印 ?
? ? ?
? 文/朱詩兵 高栓 ? ?
? ?
? ?
? 在現代管理信息系統的開發中,經常涉及到數據信息的分析、加工, ? ?
? 最終還需把統計結果形成各種形式的報表提供給領導決策參考,或進行外 ? ?
? 部交流。在Visual ? Basic中制作報表,通常是用數據環境設計器(Data ? ?
? Environment ? Designer)與數據報表設計器(Data ? Report ? Designer),或者 ? ?
? 使用第三方產品來完成。但對于大多數習慣于Excel報表的用戶而言,用以 ? ?
? 上方法生成的報表在格式和功能等方面往往不能滿足他們的要求。 ? ?
? ?
? 由于Excel具有自己的對象庫,在Visual ? Basic工程中可以加以引用, ? ?
? 通過對Excel使用OLE自動化,可以創建一些外觀整潔的報表,然后打印輸 ? ?
? 出。這樣實現了Visual ? Basi應用程序對Excel的控制。本文將針對一個具 ? ?
? 體實例,闡述基于VB和EXCEL的報表設計及打印過程。 ? ?
? ?
? 1)創建Excel對象 ? ?
? ?
? Excel對象模型包括了128個不同的對象,從矩形、文本框等簡單的對 ? ?
? 象到透視表,圖表等復雜的對象。下面簡單介紹一下其中最重要,也是用 ? ?
? 得最多的五個對象。 ? ?
? ?
? (1)Application對象 ? ?
? ?
? Application對象處于Excel對象層次結構的頂層,表示 ? Excel自身的 ? ?
? 運行環境。 ? ?
? ?
? (2)Workbook對象 ? ?
? ?
? Workbook對象直接地處于Application對象的下層,表示一個Excel工 ? ?
? 作薄文件。 ? ?
? ?
? (3)Worksheet對象 ? ?
? ?
? Worksheet對象包含于Workbook對象,表示一個Excel工作表。 ? ?
? ?
? (4)Range對象 ? ?
? ?
? Range對象包含于Worksheet對象,表示 ? Excel工作表中的一個或多個 ? ?
? 單元格。 ? ?
? ?
? (5)Cells對象 ? ?
? ?
? Cells對象包含于Worksheet對象,表示Excel工作表中的一個單元格。 ? ?
? 如果要啟動一個Excel,使用Workbook和Worksheet對象,下面的代碼 ? ?
? 啟動了Excel并創建了一個新的包含一個工作表的工作薄: ? ?
? ?
? Dim ? zsbexcel ? As ? Excel.Application ? ?
? Set ? zsbexcel ? = ? New ? Excel.Application ? ?
? zsbexcel.Visible ? = ? True ? ?
? ?
? 如要Excel不可見,可使zsbexcel.Visible ? = ? False ? ?
? ?
? zsbexcel.SheetsInNewWorkbook ? = ? 1 ? ?
? Set ? zsbworkbook ? = ? zsbexcel.Workbooks.Add ? ?
? ?
? 2)設置單元格和區域值 ? ?
? ?
? 要設置一張工作表中每個單元格的值,可以使用Worksheet對象的 ? ?
? Range屬性或Cells屬性。 ? ?
? ?
? With ? zsbexcel.ActiveSheet ? ?
? .Cells(1, ? 2).Value ? = ? "100" ? ?
? .Cells(2, ? 2).Value ? = ? "200" ? ?
? .Cells(3, ? 2).Value ? = ? "=SUM(B1:B2)" ? ?
? .Range("A3:A9") ? = ? "中國人民解放軍" ? ?
? End ? With ? ?
? ?
? 要設置單元格或區域的字體、邊框,可以利用Range對象或Cells對象 ? ?
? 的Borders屬性和Font屬性: ? ?
? ?
? With ? objexcel.ActiveSheet.Range("A2:K9").Borders ? '邊框設置 ? ?
? .LineStyle ? = ? xlBorderLineStyleContinuous ? ?
? .Weight ? = ? xlThin ? ?
? .ColorIndex ? = ? 1 ? ?
? End ? With ? ?
? With ? objexcel.ActiveSheet.Range("A3:K9").Font '字體設置 ? ?
? .Size ? = ? 14 ? ?
? .Bold ? = ? True ? ?
? .Italic ? = ? True ? ?
? .ColorIndex ? = ? 3 ? ?
? End ? With ? ?
? ?
? 通過對Excel單元格和區域值的各種設置的深入了解,可以創建各種復 ? ?
? 雜、美觀、滿足需要的、具有自己特點的報表。 ? ?
? ?
? 3)預覽及打印 ? ?
? ?
? 生成所需要的工作表后,就可以對EXCEL發出預覽、打印指令了。 ? ?
? ?
? zsbexcel.ActiveSheet.PageSetup.Orientation ? = ? xlPortrait ? ' ? ?
? 設置打印方向 ? ?
? zsbexcel.ActiveSheet.PageSetup.PaperSize ? = ? xlPaperA4 ' ? ?
? 設置打印紙的打下 ? ?
? zsbexcel.Caption ? = ? "打印預覽" ? '設置預覽窗口的 ? ?
? 標題 ? ?
? zsbexcel.ActiveSheet.PrintPreview '打印預覽 ? ?
? zsbexcel.ActiveSheet.PrintOut '打印輸出 ? ?
? ?
? 通過打印方向、打印紙張大小的設置,不斷進行預覽,直到滿意為止, ? ?
? 最終進行打印輸出。 ? ?
? ?
? 為了在退出應用程序后EXCEL不提示用戶是否保存已修改的文件,需使 ? ?
? 用如下語句: ? ?
? ?
? zsbexcel.DisplayAlerts ? = ? False ? ?
? zsbexcel.Quit ? '退出EXCEL ? ?
? zsbexcel.DisplayAlerts ? = ? True ? ?
? ?
? 如此設計的報表打印是通過 ? EXCEL程序來后臺實現的。對于使用者來 ? ?
? 說,根本看不到具體過程,只看到一張張漂亮的報表輕易地被打印出來了。 ? ?
? ?
? 4)具體實例 ? ?
? ?
? 下面給出一個具體實例,它在window98、Visual ? Basic ? 6.0、 ? ?
? Microsoft ? Office97的環境下調試通過。 ? ?
? ?
? 在VB中啟動一個新的Standard ? EXE工程,在“工程”菜單的“引用” ? ?
? 選項下引用Excel ? Object ? Library;然后在Form中添加一個命令按鈕 ? ?
? cmdExcel;最后在窗體中輸入如下代碼: ? ?
? ?
? Dim ? zsbexcel ? As ? Excel.Application ? ?
? Private ? Sub ? cmdExcel_Click() ? ?
? Set ? zsbexcel ? = ? New ? Excel.Application ? ?
? zsbexcel.Visible ? = ? True ? ?
? zsbexcel.SheetsInNewWorkbook ? = ? 1 ? ?
? Set ? zsbworkbook ? = ? zsbexcel.Workbooks.Add ? ?
? With ? zsbexcel.ActiveSheet.Range("A2:C9").Borders '邊框設置 ? ?
? .LineStyle ? = ? xlBorderLineStyleContinuous ? ?
? .Weight ? = ? xlThin ? ?
? .ColorIndex ? = ? 1 ? ?
? End ? With ? ?
? With ? zsbexcel.ActiveSheet.Range("A3:C9").Font '字體設置 ? ?
? ? .Size ? = ? 14 ? ?
? .Bold ? = ? True ? ?
? .Italic ? = ? True ? ?
? .ColorIndex ? = ? 3 ? ?
? End ? With ? ?
? zsbexcel.ActiveSheet.Rows.HorizontalAlignment ? = ? ?
? xlVAlignCenter '水平居中 ? ?
? ?
? zsbexcel.ActiveSheet.Rows.VerticalAlignment ? = ? ?
? xlVAlignCenter '垂直居中 ? ?
? ?
? With ? zsbexcel.ActiveSheet ? ?
? .Cells(1, ? 2).Value ? = ? "100" ? ?
? .Cells(2, ? 2).Value ? = ? "200" ? ?
? .Cells(3, ? 2).Value ? = ? "=SUM(B1:B2)" ? ?
? .Cells(1, ? 3).Value ? = ? "中國人民解放軍" ? ?
? .Range("A3:A9") ? = ? "50" ? ?
? End ? With ? ?
? zsbexcel.ActiveSheet.PageSetup.Orientation ? = ? xlPortrait ? ' ? ?
? xlLandscape ? ?
? zsbexcel.ActiveSheet.PageSetup.PaperSize ? = ? xlPaperA4 ? ?
? zsbexcel.ActiveSheet.PrintOut ? ?
? zsbexcel.DisplayAlerts ? = ? False ? ?
? zsbexcel.Quit ? ?
? zsbexcel.DisplayAlerts ? = ? True ? ?
? Set ? zsbexcel ? = ? Nothing????
總結
以上是生活随笔為你收集整理的基于VB和EXCEL的报表设计及打印的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Visual Basic中实现带预览的对
- 下一篇: 如何将表中的数据导出到电子表格中