vb.net最好用的報表 vbnet recordset

在VB.NET,用到了水晶報表。

如果是FineReport報表,有兩種方法,一種是需要將數(shù)據(jù)源放在你們本地或網(wǎng)絡(luò)的服務(wù)器上,這樣換一臺機器數(shù)據(jù)源也不會出問題;另一種就是打包時將所用數(shù)據(jù)也一并打包,了。樓主可以試一下水晶報表,應(yīng)該是一個原理。

創(chuàng)新互聯(lián)致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營銷,包括網(wǎng)站制作、網(wǎng)站建設(shè)、SEO優(yōu)化、網(wǎng)絡(luò)推廣、整站優(yōu)化營銷策劃推廣、電子商務(wù)、移動互聯(lián)網(wǎng)營銷等。創(chuàng)新互聯(lián)為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制及解決方案,創(chuàng)新互聯(lián)核心團隊十多年專注互聯(lián)網(wǎng)開發(fā),積累了豐富的網(wǎng)站經(jīng)驗,為廣大企業(yè)客戶提供一站式企業(yè)網(wǎng)站建設(shè)服務(wù),在網(wǎng)站建設(shè)行業(yè)內(nèi)樹立了良好口碑。

用VB.NET結(jié)合Excel設(shè)計統(tǒng)計生產(chǎn)報表

用EXCEL做企業(yè)生產(chǎn)報表的理由 Excel表格生成和公式設(shè)置十分強大便利 是一個強有力的信息分析與處理工具 特別是EXCEL的公式 函數(shù) VBA語言 功能極其強大 我試用過其他電子表格軟件 在功能上和EXCEL根本沒有可比性 Visual Studio NET也同樣是MicroSoft的產(chǎn)品 Visual Studio NET調(diào)用EXCEL做企業(yè)報表十分方便 證明當時我選Visual Studio NET作為首選開發(fā)工具是正確的 軟件構(gòu)思 先在EXCEL里定制好名為《統(tǒng)計表》的樣表(模版) 在樣表中設(shè)置好各種格式 填寫好固定項 在窗體上放很三個控件 兩個DateTimePicker控件 用來選擇開始統(tǒng)計時間和結(jié)束統(tǒng)計時間 一個Button以啟動程序 軟件欲實現(xiàn)的功能是 點擊Button 自動查找符合日期符合日期范圍的生產(chǎn)計劃工作表 然后利用SortedList統(tǒng)計各個辦事處的計劃數(shù)量和未完成數(shù)量 及各個產(chǎn)品型號的計劃數(shù)量和未完成數(shù)量 再把SortedList的數(shù)據(jù)讀出寫到《統(tǒng)計表》中 這里要注意的是 各個生產(chǎn)報表格式必須規(guī)范統(tǒng)一 因為程序是按照固定單元格位置讀取數(shù)據(jù)的 SortedList類 除了具備VB NET調(diào)用EXCEL的基礎(chǔ)知識外 本例主要用到SortedList類 SortedList類表示鍵/值對的集合 這些鍵和值按鍵排序并可按照鍵和索引訪問 SortedList 是 Hashtable 和 Array 的混合 當使用 Item 索引器屬性按照元素的鍵訪問元素時 其行為類似于 Hashtable 當使用 GetByIndex 或 SetByIndex 按照元素的索引訪問元素時 其行為類似于 Array SortedList 在內(nèi)部維護兩個數(shù)組以將數(shù)組存儲到列表中 即 一個數(shù)組用于鍵 另一個數(shù)組用于相關(guān)聯(lián)的值 每個元素都是一個可作為 DictionaryEntry 對象進行訪問的鍵/值對 鍵不能為空引用(Visual Basic 中為 Nothing) 但值可以 SortedList 的容量是列表可擁有的元素數(shù) 隨著向 SortedList 中添加元素 容量通過重新分配按需自動增加 可通過調(diào)用 TrimToSize 或通過顯式設(shè)置 Capacity 屬性減少容量 SortedList 的元素將按照特定的 IComparer 實現(xiàn)(在創(chuàng)建 SortedList 時指定)或按照鍵本身提供的 IComparable 實現(xiàn)并依據(jù)鍵來進行排序 不論在哪種情況下 SortedList 都不允許重復鍵 VB NET結(jié)合EXCEL統(tǒng)計生產(chǎn)報表 以下是實現(xiàn)代碼 供參考 為方便初學者 部份地方加以注釋 Private Sub Form _Load(ByVal sender As Object ByVal e As System EventArgs) Handles MyBase LoadDateTimePicker MaxDate = Date NowDateTimePicker MinDate = # / / #DateTimePicker MaxDate = Date NowDateTimePicker MinDate = # / / #End SubPrivate Sub 灶具分析統(tǒng)計()Call killEXCEL()Dim excelApp As New Excel ApplicationDim 佳尼 灶具生產(chǎn)計劃 As Excel WorkbookDim 行號 As Integer = Dim 列號 As Integer = Dim 辦事處計劃數(shù)統(tǒng)計 As New SortedListDim 辦事處完成數(shù)統(tǒng)計 As New SortedListDim 型號計劃數(shù)統(tǒng)計 As New SortedListDim 型號完成數(shù)統(tǒng)計 As New SortedListDim 統(tǒng)計表 As Excel Worksheet Try佳尼 灶具生產(chǎn)計劃 = excelApp Workbooks Open( E:\my documents\生產(chǎn)計劃\佳尼 灶具生產(chǎn)計劃 xls )統(tǒng)計表 = CType(佳尼 灶具生產(chǎn)計劃 Worksheets( 統(tǒng)計表 ) Excel Worksheet)統(tǒng)計表 Cells( ) value = DateTimePicker Value ToShortDateString 統(tǒng)計開始日期統(tǒng)計表 Cells( ) value = DateTimePicker Value ToShortDateString 統(tǒng)計結(jié)束日期統(tǒng)計表 Range( c :z ) Value = 先清空統(tǒng)計表中原來有關(guān)數(shù)據(jù)統(tǒng)計表 Range( c :z ) Value = Dim 生產(chǎn)計劃表 As Excel WorksheetFor Each 生產(chǎn)計劃表 In 佳尼 灶具生產(chǎn)計劃 Worksheets 遍歷生產(chǎn)計劃表If Strings Left(生產(chǎn)計劃表 Name ) = Or Strings Left(生產(chǎn)計劃表 Name ) = Then 如果是 或 開頭的表名 因生產(chǎn)計劃表名是 或 開頭 MsgBox(生產(chǎn)計劃表 Name)行號 = 生產(chǎn)計劃表中生產(chǎn)數(shù)據(jù)從第四行開始列號 = 第 列是計劃下發(fā)日期 從計劃下發(fā)日期判斷是否是所要數(shù)據(jù)Dim 臨時行號 As Integer = 求得工作表中最后一行所在的行號 從第四行開始往下計算While 生產(chǎn)計劃表 Cells(臨時行號 列號) value Nothing MsgBox(生產(chǎn)計劃表 Cells(行號 列號) value 行號)臨時行號 += End While臨時行號 = 得到生產(chǎn)計劃表中 最后數(shù)據(jù)行所在的行號 MsgBox(臨時行號)For 行號 = To 臨時行號 生產(chǎn)計劃標準格式行號從 開始 到工作表中最后一行If (CDate(DateTimePicker Value ToShortDateString) = CDate(生產(chǎn)計劃表.Cells(行號, 列號).value)) And (CDate(DateTimePicker2.Value.ToShortDateString) = CDate(生產(chǎn)計劃表 Cells(行號 列號) value)) Then 如果日期在規(guī)定范圍內(nèi) 灶具各城市分布情況Dim 城市 As String = 生產(chǎn)計劃表 Cells(行號 ) value 第 列是城市名稱Dim 計劃數(shù) As Decimal = CType(生產(chǎn)計劃表 Cells(行號 ) value Decimal) 第 列是計劃數(shù)Dim 完成數(shù) As Decimal = CType(生產(chǎn)計劃表 Cells(行號 ) value Decimal) 第 列是實際完成數(shù)Dim 未完成數(shù) As Decimal = 用Decimal是因為后面要加小數(shù)If 完成數(shù) 計劃數(shù) Then '如果沒有完成未完成數(shù) = 計劃數(shù) - 完成數(shù)End IfIf 城市 "" ThenIf InStr(城市, "沈陽") 0 Or InStr(城市, "鞍山") 0 Or InStr(城市, "哈爾濱")   0 Or InStr(城市, "葫蘆島") 0 ThenIf 辦事處計劃數(shù)統(tǒng)計.Contains("沈陽") Then辦事處計劃數(shù)統(tǒng)計.Item("沈陽") += 計劃數(shù)Else辦事處計劃數(shù)統(tǒng)計.Add("沈陽", 計劃數(shù))End IfIf 辦事處完成數(shù)統(tǒng)計.Contains("沈陽") Then辦事處完成數(shù)統(tǒng)計.Item("沈陽") += 未完成數(shù)Else辦事處完成數(shù)統(tǒng)計.Add("沈陽", 未完成數(shù))End IfElseIf 辦事處計劃數(shù)統(tǒng)計.Contains(城市) Then辦事處計劃數(shù)統(tǒng)計.Item(城市) += 計劃數(shù)Else辦事處計劃數(shù)統(tǒng)計.Add(城市, 計劃數(shù))End IfIf 辦事處完成數(shù)統(tǒng)計.Contains(城市) Then辦事處完成數(shù)統(tǒng)計.Item(城市) += 未完成數(shù)Else辦事處完成數(shù)統(tǒng)計.Add(城市, 未完成數(shù))End IfEnd IfElseMsgBox(生產(chǎn)計劃表.Name "沒有城市名稱", MsgBoxStyle.Critical, "生產(chǎn)計劃中要有城市名稱")excelApp.Visible = True生產(chǎn)計劃表.Activate()生產(chǎn)計劃表.Select()End If'以下計算灶具型號分布情況Dim 型號 As String = Strings.Left(生產(chǎn)計劃表.Cells(行號, 2).value, 3) '灶具型號在第3列If 型號計劃數(shù)統(tǒng)計.Contains(型號) Then型號計劃數(shù)統(tǒng)計.Item(型號) += 計劃數(shù)Else型號計劃數(shù)統(tǒng)計.Add(型號, 計劃數(shù))End IfIf 型號完成數(shù)統(tǒng)計.Contains(型號) Then型號完成數(shù)統(tǒng)計.Item(型號) += 未完成數(shù)Else型號完成數(shù)統(tǒng)計.Add(型號, 未完成數(shù))End IfEnd IfNextEnd IfNextDim 城市數(shù) As Integer = 辦事處計劃數(shù)統(tǒng)計.CountDim 城市數(shù)clone As Integer = 辦事處計劃數(shù)統(tǒng)計.Count行號 = 4'依計劃數(shù)大小排序Dim 辦事處計劃數(shù)統(tǒng)計副本 As New SortedListDim asa As Decimal = 0.001 '加上此數(shù)是為了防止鍵值的重復,在工作表中可選不顯示小數(shù)Dim 辦事處計劃數(shù)Enum As IDictionaryEnumerator = 辦事處計劃數(shù)統(tǒng)計.GetEnumeratorWhile 辦事處計劃數(shù)Enum.MoveNext辦事處計劃數(shù)統(tǒng)計副本.Add(辦事處計劃數(shù)Enum.Value + asa, 辦事處計劃數(shù)Enum.Key)asa += 0.001End While'這里利用SortedList自動排序的功能Dim i As Integer = 1For 列號 = 3 To 3 + 城市數(shù) - 1 '從第三列開始填寫數(shù)據(jù),這是預先定義的格式統(tǒng)計表.Cells(行號, 列號).value = 辦事處計劃數(shù)統(tǒng)計副本.GetByIndex(城市數(shù)clone - i) '城市統(tǒng)計表.Cells(行號 + 1, 列號).value = 辦事處計劃數(shù)統(tǒng)計副本.GetKey(城市數(shù)clone - i) '計劃數(shù)統(tǒng)計表.Cells(行號 + 2, 列號).value = 辦事處完成數(shù)統(tǒng)計.Item(辦事處計劃數(shù)統(tǒng)計副本 .GetByIndex(城市數(shù)clone - i)) '計劃數(shù)i += 1Next'以型號計劃數(shù)多少排序Dim 型號計劃數(shù)統(tǒng)計副本 As New SortedList辦事處計劃數(shù)Enum = 型號計劃數(shù)統(tǒng)計.GetEnumeratorWhile 辦事處計劃數(shù)Enum.MoveNext型號計劃數(shù)統(tǒng)計副本.Add(辦事處計劃數(shù)Enum.Value + asa, 辦事處計劃數(shù)Enum.Key)asa += 0.001' MsgBox(辦事處計劃數(shù)Enum.Valu lishixinzhi/Article/program/net/201311/11282

VB.NET 中用excel、dataset生成報表

推薦博計報表,通過可視化類似Excel界面設(shè)計報表,然后通過一個頁面發(fā)布報表,可以導出Excel,pdf還可以在線精確打印,很方便的。還能制作各種統(tǒng)計圖

本文標題:vb.net最好用的報表 vbnet recordset
分享鏈接:http://muchs.cn/article38/dohsgpp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、網(wǎng)站建設(shè)小程序開發(fā)、商城網(wǎng)站、用戶體驗企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)