CrystalReportViewer
創新互聯從2013年創立,是專業互聯網技術服務公司,擁有項目成都做網站、網站建設、外貿營銷網站建設網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元烏蘭察布做網站,已為上家服務,為烏蘭察布各地企業和個人服務,聯系電話:13518219792
dataset 定義數據源
.rpt 文件描述具體報表樣式
再加一個調用報表的FORM,就可以實現簡單的報表功能
Option Explicit
dim Report as New Cystal1
Private Sub Form_Load()
Screen.MousePointer = vbHourglass
'調用水晶報表時置鼠標為沙漏狀 CRViewer91.ReportSource = Report '該語句的賦值將在后面被修改
CRViewer91.ViewReport
Screen.MousePointer = vbDefault '調用水晶報表完成后置鼠標為默認形狀
End Sub
Private Sub Form_Resize()
CRViewer91.Top = 0
CRViewer91.Left = 0
CRViewer91.Height = ScaleHeight
CRViewer91.Width = ScaleWidth
End Sub
Visualbasic代碼編輯器沒有這個功能,但可以用第三方的編輯軟件Emedit來實現這個功能。
1、用Emedit打開*.frm文件。
2、點工具,當前配置屬性,然后勾選顯示行號即可。
代碼已測試。
一、測試需要的INI文件。名稱為“setinfo.ini”,存放路徑為你解決方案里“Bin“文件夾的”Debug“文件夾里。
內容:
[Location]
pnlTime.Location.X=787
pnlTime.Location.Y=0
[TopMost]
Top=True
二、操作INI文件的類。新建一個類,類中內容為:
Public?Class?Class1
Public?Declare?Function?GetPrivateProfileString?Lib?"kernel32"?Alias?"GetPrivateProfileStringA"?_
(?_
ByVal?lpApplicationName?As?String,?_
ByVal?lpKeyName?As?String,?_
ByVal?lpDefault?As?String,?_
ByVal?lpReturnedString?As?String,?_
ByVal?nSize?As?Int32,?_
ByVal?lpFileName?As?String?_
)?As?Int32
End?Class
三、界面代碼:
Imports?System.IO?'for?path
Public?Class?Form1
Private?Sub?Button1_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Button1.Click
getINI()
End?Sub
Private?Sub?getINI()
Dim?iniclass?As?New?Class1?'
Dim?myBf?As?String?'get?set_info?開辟存儲的內存
myBf?=?New?String(CChar(""),?256)
Dim?myFN?As?String?'配置文件的文件路徑
myFN?=?Path.Combine(My.Application.Info.DirectoryPath,?"setinfo.ini")
Dim?myAN?As?String?'Application_NAME,也是Section名稱
myAN?=?Me.TextBox1.Text
Dim?myKN?As?String?'KEY_NAME,關鍵字名稱
myKN?=?Me.TextBox2.Text
Class1.GetPrivateProfileString(myAN,?myKN,?"",?myBf,?myBf.Length,?myFN)?'調用讀取INI文件的操作
TextBox3.Text?=?Microsoft.VisualBasic.Left(myBf,?InStr(myBf,?Chr(0))?-?1)?'截取有用部分,有必要
End?Sub
End?Class
四、測試截圖如下
VB是常用的應用軟件開發工具之一,由于VB的報表功能有限,而且一但報表格式發生變化,就得相應修改程序,給應用軟件的維護工作帶來極大的不便。因此有很多程序員現在已經充分利用EXECL的強大報表功來實現報表功能。但由于VB與EXCEL由于分別屬于不同的應用系統,如何把它們有機地結合在一起,是一個值得我們研究的課題。
一、 VB讀寫EXCEL表:
VB本身提自動化功能可以讀寫EXCEL表,其方法如下:
1、在工程中引用Microsoft Excel類型庫:
從"工程"菜單中選擇"引用"欄;選擇Microsoft Excel 9.0 Object Library(EXCEL2000),然后選擇"確定"。表示在工程中要引用EXCEL類型庫。
2、在通用對象的聲明過程中定義EXCEL對象:
Dim xlApp As Excel.Application
Dim xlBook As Excel.WorkBook
Dim xlSheet As Excel.Worksheet
3、在程序中操作EXCEL表常用命令:
Set xlApp = CreateObject("Excel.Application") '創建EXCEL對象
Set xlBook = xlApp.Workbooks.Open("文件名") '打開已經存在的EXCEL工件簿文件
xlApp.Visible = True '設置EXCEL對象可見(或不可見)
Set xlSheet = xlBook.Worksheets("表名") '設置活動工作表
xlSheet.Cells(row, col) =值 '給單元格(row,col)賦值
xlSheet.PrintOut '打印工作表
xlBook.Close (True) '關閉工作簿
xlApp.Quit '結束EXCEL對象
Set xlApp = Nothing '釋放xlApp對象
xlBook.RunAutoMacros (xlAutoOpen) '運行EXCEL啟動宏
xlBook.RunAutoMacros (xlAutoClose) '運行EXCEL關閉宏
4、在運用以上VB命令操作EXCEL表時,除非設置EXCEL對象不可見,否則VB程序可繼續執行其它操作,也能夠關閉EXCEL,同時也可對EXCEL進行操作。但在EXCEL操作過程中關閉EXCEL對象時,VB程序無法知道,如果此時使用EXCEL對象,則VB程序會產生自動化錯誤。形成VB程序無法完全控制EXCEL的狀況,使得VB與EXCEL脫節。
二、 EXCEL的宏功能:
EXCEL提供一個Visual Basic編輯器,打開Visual Basic編輯器,其中有一工程屬性窗口,點擊右鍵菜單的"插入模塊",則增加一個"模塊1",在此模塊中可以運用Visual Basic語言編寫函數和過程并稱之為宏。其中,EXCEL有兩個自動宏:一個是啟動宏(Sub Auto_Open()),另一個是關閉宏(Sub Auto_Close())。它們的特性是:當用EXCEL打含有啟動宏的工簿時,就會自動運行啟動宏,同理,當關閉含有關閉宏的工作簿時就會自動運行關閉宏。但是通過VB的自動化功能來調用EXCEL工作表時,啟動宏和關閉宏不會自動運行,而需要在VB中通過命令xlBook.RunAutoMacros (xlAutoOpen)和xlBook.RunAutoMacros (xlAutoClose) 來運行啟動宏和關閉宏。
三、 VB與EXCEL的相互勾通:
充分利用EXCEL的啟動宏和關閉宏,可以實現VB與EXCEL的相互勾通,其方法如下:
在EXCEL的啟動宏中加入一段程序,其功能是在磁盤中寫入一個標志文件,同時在關閉宏中加入一段刪除此標志文件的程序。VB程序在執行時通過判斷此標志文件存在與否來判斷EXCEL是否打開,如果此標志文件存在,表明EXCEL對象正在運行,應該禁止其它程序的運行。如果此標志文件不存在,表明EXCEL對象已被用戶關閉,此時如果要使用EXCEL對象運行,必須重新創建EXCEL對象。
四、舉例:
1、在VB中,建立一個FORM,在其上放置兩個命令按鈕,將Command1的Caption屬性改為EXCEL,Command2的Caption屬性改為End。然后在其中輸入如下程序:
Dim xlApp As Excel.Application '定義EXCEL類
Dim xlBook As Excel.Workbook '定義工件簿類
Dim xlsheet As Excel.Worksheet '定義工作表類
Private Sub Command1_Click() '打開EXCEL過程
If Dir("D:\temp\excel.bz") = "" Then '判斷EXCEL是否打開
Set xlApp = CreateObject("Excel.Application") '創建EXCEL應用類
xlApp.Visible = True '設置EXCEL可見
Set xlBook = xlApp.Workbooks.Open("D:\temp\bb.xls") '打開EXCEL工作簿
Set xlsheet = xlBook.Worksheets(1) '打開EXCEL工作表
xlsheet.Activate '激活工作表
xlsheet.Cells(1, 1) = "abc" '給單元格1行駛列賦值
xlBook.RunAutoMacros (xlAutoOpen) 運行EXCEL中的啟動宏
Else
MsgBox ("EXCEL已打開")
End If
End Sub
Private Sub Command2_Click()
If Dir("D:\temp\excel.bz") "" Then '由VB關閉EXCEL
xlBook.RunAutoMacros (xlAutoClose) '執行EXCEL關閉宏
xlBook.Close (True) '關閉EXCEL工作簿
xlApp.Quit '關閉EXCEL
End If
Set xlApp = Nothing '釋放EXCEL對象
End
End Sub
2、在D盤根目錄上建立一個名為Temp的子目錄,在Temp目錄下建立一個名為"bb.xls"的EXCEL文件。
3、在"bb.xls"中打開Visual Basic編輯器,在工程窗口中點鼠標鍵選擇插入模塊,在模塊中輸入入下程序存盤:
Sub auto_open()
Open "d:\temp\excel.bz" For Output As #1 '寫標志文件
Close #1
End Sub
Sub auto_close()
Kill "d:\temp\excel.bz" '刪除標志文件
End Sub
4、運行VB程序,點擊EXCEL按鈕可以打開EXCEL系統,打開EXCEL系統后,VB程序和EXCEL分別屬兩個不同的應用系統,均可同時進行操作,由于系統加了判斷,因此在VB程序中重復點擊EXCEL按鈕時會提示EXCEL已打開。如果在EXCEL中關閉EXCEL后再點EXCEL按鈕,則會重新打開EXCEL。而無論EXCEL打開與否,通過VB程序均可關閉EXCEL。這樣就實現了VB與EXCEL的無縫連接。
別的地方轉來的!~ 不過我們以前做的時候 都是在打印機里增加一種打印紙 然后就可以選了!~
一下轉載內容!~~~
水晶報表-強大而成熟,但是多少男兒漢敗倒在他的自定義紙張設置上。
1:水晶報表是紙形打印。所以自定義紙張類打印肯定要在電腦上增加對應的紙張才行(手動加還是代碼加這個不管)
2:紙張分3種系統內建(不可更改),自定義,打印機自帶。很遺憾的是水晶只認系統內建的。
3:打印機一般分2種。1普通噴墨的A4,2有聯單的針式
4:注意水晶報表不是所見所得的,預覽的紙張是什么不一定打印的就是什么紙張(受3方影響。打印機、報表內設置、PAPERSIZE 屬性,三者之間關系不詳)。
5:對于第一種A4紙張。沒什么好說的系統內建紙型。水晶報表認。直接指定就行
6:對于第二種聯單的自定義型一般專機專用,當然是建好紙張讓打印機默認自己建的紙張為默認首選了。
7:然后設置水晶報表使用打印機默認的紙張PaperSize = CrystalDecisions.Shared.PaperSize.DefaultPaperSize
以上能保證專機專紙的任何打印。:要注意第4點。如果你是自定義紙而且要預覽要保障預覽和打印都用指定的紙張,那么預覽時你得指定PaperSize=你自定義紙張的索引號。打印的時候又改成CrystalDecisions.Shared.PaperSize.DefaultPaperSize
8:如果你想一個打印機多個自定義紙張那么用API吧動態改變打印機的默認紙張,根據以上拐2彎就能實現了遺憾的是網絡打印機的話就沒折了。o(︶︿︶)o 唉
網頁名稱:vb.net報表自定義 vb報表控件
文章位置:http://www.yijiale78.com/article34/hpdcse.html
成都網站建設公司_創新互聯,為您提供品牌網站設計、App開發、網站設計公司、定制開發、企業建站、小程序開發
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯