visual studio 畫表格 怎么從excel中隨機(jī)抽取數(shù)據(jù)?
怎么從excel中隨機(jī)抽取數(shù)據(jù)?1。如何實現(xiàn)VB與EXCEL的無縫連接VB 是常用的應(yīng)用軟件開發(fā)工具之一,由于VB的報表功能有限,而且一旦報表格式發(fā)生變化,就得相應(yīng)修改程序,給應(yīng)用軟件的維護(hù)工作帶來極
怎么從excel中隨機(jī)抽取數(shù)據(jù)?
1。如何實現(xiàn)VB與EXCEL的無縫連接
VB 是常用的應(yīng)用軟件開發(fā)工具之一,由于VB的報表功能有限,而且一旦報表格式發(fā)生變化,就得相應(yīng)修改程序,給應(yīng)用軟件的維護(hù)工作帶來極大的不便。因為有很多程序員現(xiàn)在已經(jīng)充分利用Excel的強(qiáng)大報表功能來實現(xiàn)。
但由于VB與Excel分別屬于不同的應(yīng)用系統(tǒng),如何把它們有機(jī)地結(jié)合在一起,是一個值得我們研究的課題。
筆者在軟件開發(fā)工作中,對VB的自動化功能和Excel的宏功能進(jìn)行了一定的研究,實現(xiàn)了VB與Excel的有機(jī)結(jié)合?,F(xiàn)提出來與大家探討。
一、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”)'創(chuàng)建Excel對象
Set XlBook xlApp。
Workbooks。Open(“文件名”) '打開已經(jīng)存在的Excel工作薄文件
xlApp。Visible True '設(shè)置Excel對象可見(或不可見)
Set xlSheet xlBook。Worksheets(“表名”)
xlSheet。
Cells(row,col) 值 '給單元格(row,col)賦值
xlSheet。PrintOut '打印工作表
xlBook。CloseTrue '關(guān)閉工作薄
xlApp。Quit '結(jié)束Excel對象
Set xlApp Nothing '釋放xlApp對象
xlBook。
RunAutoMacros xlAutoOpen '運(yùn)行Excel啟動宏
xlBook。RunAutoMacros xlAutoClose '運(yùn)行Excel關(guān)閉宏
4、在運(yùn)用以上VB命令操作Excel表時,除非設(shè)置Excel對象不可見,否則VB程序可繼續(xù)執(zhí)行其它操作,也能夠關(guān)閉Excel,同時也可對Excel進(jìn)行操作。
但在Excel操作過程中關(guān)閉Excel對象時,VB無法知道,如果此時使用Excel對象,則VB程序會出現(xiàn)自動化錯誤,形成VB程序無法完全控制Excel狀況,使得VB與Excel脫節(jié)。
二、Excel的宏功能
Excel 提供了一個Visual Basic編輯器,打開Visual Basic編輯器,其中有一工程屬性窗口,點擊右鍵菜單的“插入模塊”,則增加一個“模塊1”,在此模塊中可以運(yùn)用Visual Basic語言編寫函數(shù)和過程并稱之為宏。
其中,Excel有兩個自動宏:一個是啟動宏(Sub Auto_Open()),另一個是關(guān)閉宏(Sub Auto_Close())。它們的特性是:當(dāng)用Excel打開含有啟動宏的工作薄時,就會自動運(yùn)行啟動宏,同理,當(dāng)關(guān)閉含有關(guān)閉宏的工作薄時就會自動運(yùn)行關(guān)閉宏。
但是通過VB的自動化功能來調(diào)用Excel工作表時,啟動宏和關(guān)閉宏不會自動運(yùn)行,而需要在VB中通過命令 xlBook。RunAutoMacros(xlAutoOpen)和xlBook。RunAutoMacros(xlAutoClose)來運(yùn)行啟動宏和關(guān)閉宏。
三、VB與Excel的相互溝通:
充分利用Excel的啟動宏和關(guān)閉宏,可以實現(xiàn)VB與Excel的相互溝通,其方法如下:
在Excel的啟動宏中加入一段程序,其功能是在磁盤中寫入一個標(biāo)志文件,同時在關(guān)閉宏中加入一段刪除此標(biāo)志的程序。
VB程序在執(zhí)行時通過判斷此標(biāo)志文件存在與否來判斷Excel是否打開,如果此標(biāo)志文件存在,表明Excel對象正在運(yùn)行,應(yīng)該禁止其它程序的運(yùn)行。如果此標(biāo)志文件不存在,表明Excel對象已被關(guān)閉,此時如果要使用Excel對象運(yùn)行,必須重新創(chuàng)建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() 打開Exc:temp ”) “”Then 判斷Excel是否打開
Set xlApp CreateObject(“Excel。
Application”) 創(chuàng)建Excel應(yīng)用類
xlApp。Visible True 設(shè)置Exc:tempb。xls”) 打開Excel工作薄
Set xlSheet xlBook。
Worksheet(1) 打開Excel工作表
xlSheet。Activate 激活工作表
xlSheet。Cells(1,1) “abc” 給單元格1行駛列賦值
xlBook。RunAutoMacros(xlAutoOpen) 運(yùn)行Excel中的啟動宏
Else
MsgBox(“Excel已打開”)
End If
End Sub
Private Sub Command2_Click()
If Dir(“D:temp ”)ltgt “” Then 由VB關(guān)閉Excel
xlBook。
RunAutoMacros(xlAutoClose) 執(zhí)行Excel關(guān)閉宏
xlBook。Close(True)關(guān)閉Excel工作薄
xlApp。Quit 關(guān)閉Excel
End If
Set xlApp Nothing 釋放Excel對象
End
End Sub
2、在D盤根目錄上建立一個名為temp的子目錄,在temp目錄下建立一個名為“bb。
xls”的Excel文件。
3、在“bb。xls”中打開Visual Basic編輯器,在工程窗口中點鼠標(biāo)鍵選擇插入模塊,在模塊中輸入以下程序存盤:
Sub auto_op:temp ” For Output As #1
Close #1
End Sub
Sub auto_clos:temp ”
End Sub
4、運(yùn)行VB程序,點擊Excel按鈕可以打開Excel系統(tǒng),打開Excel系統(tǒng)后,VB程序和Excel分別屬兩個不同的應(yīng)用系統(tǒng),均可同時進(jìn)行操作,由于系統(tǒng)加了判斷,因此在VB程序中重復(fù)點擊Excel按鈕時會提示Excel已打開。
如果在Excel中關(guān)閉Excel后再點Excel按鈕,則會重新打開Excel。而無論Excel打開與否,通過VB程序均可關(guān)閉Excel。這樣就實現(xiàn)了VB與Excel的無縫連接。
2。用VB。NET結(jié)合Excel設(shè)計統(tǒng)計生產(chǎn)報表
用EXCEL做企業(yè)生產(chǎn)報表的理由
Excel表格生成和公式設(shè)置十分強(qiáng)利,是一個強(qiáng)有力的信息分析與處理工具。
特別是EXCEL的公式、函數(shù)、VBA語言,功能極其強(qiáng)大。我試用過其他電子表格軟件,在功能上和EXCEL根本沒有可比性。
Visual Studio ,NET也同樣是MicroSoft的產(chǎn)品,Visual Studio ,NET調(diào)用EXCEL做企業(yè)報表十分方便。
證明當(dāng)時我選Visual Studio ,NET作為首選開發(fā)工具是正確的。
軟件構(gòu)思
先在EXC《統(tǒng)計表》的樣表(模版),,在樣表中設(shè)置好各種格式,填寫好固定項。
在窗體上放很三個控件,兩個DateTimePick《統(tǒng)計表》中。
這里要注意的是,各個生產(chǎn)報表格式必須規(guī)范統(tǒng)一,因為程序是按照固定單元格位置讀取數(shù)據(jù)的。
SortedList類
除了具備VB,NET調(diào)用EXCEL的基礎(chǔ)知識外,本例主要用到SortedList類。
SortedList類表示鍵/值對的集合,這些鍵和值按鍵排序并可按照鍵和索引訪問。
SortedList 是 Hashtable 和 Array 的混合。當(dāng)使用 Item 索引器屬性按照元素的鍵訪問元素時,其行為類似于 Hashtable。當(dāng)使用 GetByIndex 或 SetByIndex 按照元素的索引訪問元素時,其行為類似于 Array。
SortedList 在內(nèi)部維護(hù)兩個數(shù)組以將數(shù)組存儲到列表中;即,一個數(shù)組用于鍵,另一個數(shù)組用于相關(guān)聯(lián)的值。每個元素都是一個可作為 DictionaryEntry 對象進(jìn)行訪問的鍵/值對。鍵不能為空引用(Visual Basic 中為 Nothing),但值可以。
SortedList 的容量是列表可擁有的元素數(shù)。隨著向 SortedList 中添加元素,容量通過重新分配按需自動增加。可通過調(diào)用 TrimToSize 或通過顯式設(shè)置 Capacity 屬性減少容量。
SortedList 的元素將按照特定的 IComparer 實現(xiàn)(在創(chuàng)建 SortedList 時指定)或按照鍵本身提供的 IComparable 實現(xiàn)并依據(jù)鍵來進(jìn)行排序。
不論在哪種情況下,SortedList 都不允許重復(fù)鍵。
VB,NET結(jié)合EXC
怎么在PPT中使用EXCEL中大量數(shù)據(jù)生成動態(tài)曲線圖?
在PPT中選擇插入--對象--由文件創(chuàng)建,選擇你的xls表格。
最最重要的是,勾選下面的「鏈接」。然后改動xls之后進(jìn)入PPT會提示更新鏈接。然后改動xls之后進(jìn)入PPT會提示更新鏈接。
以上均為2010版,或許顯示有所不同,不過方法通用。
我補(bǔ)充一下vba的方法:
首先,你要把這個宏安全調(diào)到低,然后再選項-自定義功能區(qū)勾選開發(fā)工具,然后再Ofiice中點擊開發(fā)工具-VisualBasic,復(fù)制下面代碼:
SubOnSlideShowPageChange()這個是ppt放映時自動運(yùn)行的,用來打開調(diào)用excel
SetxlAppNewExcel。
Application
xlFilePath$ActivePresentation。Pathamp