VB是常用的應(yīng)用軟件開發(fā)工具之一,由于VB的報表功能有限,而且一但報表格式發(fā)生變化,就得相應(yīng)修改程序,給應(yīng)用軟件的維護(hù)工作帶來極大的不便。因此有很多程序員現(xiàn)在已經(jīng)充分利用EXECL的強大報表功來實現(xiàn)報表功能。但由于VB與EXCEL由于分別屬于不同的應(yīng)用系統(tǒng),如何把它們有機地結(jié)合在一起,是一個值得我們研究的課題。

為卓尼等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及卓尼網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都做網(wǎng)站、成都網(wǎng)站設(shè)計、卓尼網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎ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("表名") '設(shè)置活動工作表
xlSheet.Cells(row, col) =值 '給單元格(row,col)賦值
xlSheet.PrintOut '打印工作表
xlBook.Close (True) '關(guān)閉工作簿
xlApp.Quit '結(jié)束EXCEL對象
Set xlApp = Nothing '釋放xlApp對象
xlBook.RunAutoMacros (xlAutoOpen) '運行EXCEL啟動宏
xlBook.RunAutoMacros (xlAutoClose) '運行EXCEL關(guān)閉宏
4、在運用以上VB命令操作EXCEL表時,除非設(shè)置EXCEL對象不可見,否則VB程序可繼續(xù)執(zhí)行其它操作,也能夠關(guān)閉EXCEL,同時也可對EXCEL進(jìn)行操作。但在EXCEL操作過程中關(guān)閉EXCEL對象時,VB程序無法知道,如果此時使用EXCEL對象,則VB程序會產(chǎn)生自動化錯誤。形成VB程序無法完全控制EXCEL的狀況,使得VB與EXCEL脫節(jié)。
二、 EXCEL的宏功能:
EXCEL提供一個Visual Basic編輯器,打開Visual Basic編輯器,其中有一工程屬性窗口,點擊右鍵菜單的"插入模塊",則增加一個"模塊1",在此模塊中可以運用Visual Basic語言編寫函數(shù)和過程并稱之為宏。其中,EXCEL有兩個自動宏:一個是啟動宏(Sub Auto_Open()),另一個是關(guān)閉宏(Sub Auto_Close())。它們的特性是:當(dāng)用EXCEL打含有啟動宏的工簿時,就會自動運行啟動宏,同理,當(dāng)關(guān)閉含有關(guān)閉宏的工作簿時就會自動運行關(guān)閉宏。但是通過VB的自動化功能來調(diào)用EXCEL工作表時,啟動宏和關(guān)閉宏不會自動運行,而需要在VB中通過命令xlBook.RunAutoMacros (xlAutoOpen)和xlBook.RunAutoMacros (xlAutoClose) 來運行啟動宏和關(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īng)該禁止其它程序的運行。如果此標(biāo)志文件不存在,表明EXCEL對象已被用戶關(guān)閉,此時如果要使用EXCEL對象運行,必須重新創(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() '打開EXCEL過程
If Dir("D:\temp\excel.bz") = "" Then '判斷EXCEL是否打開
Set xlApp = CreateObject("Excel.Application") '創(chuàng)建EXCEL應(yīng)用類
xlApp.Visible = True '設(shè)置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關(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_open()
Open "d:\temp\excel.bz" For Output As #1 '寫標(biāo)志文件
Close #1
End Sub
Sub auto_close()
Kill "d:\temp\excel.bz" '刪除標(biāo)志文件
End Sub
4、運行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的無縫連接。
分類: 電腦/網(wǎng)絡(luò) 程序設(shè)計 其他編程語言
問題描述:
在SQL數(shù)據(jù)庫里已有一個現(xiàn)成的空數(shù)據(jù)表(只有字段、沒有數(shù)據(jù)),請問高手,怎樣在VB.NET中用SQL語句把該數(shù)據(jù)庫中的那個表復(fù)制一個到該數(shù)據(jù)庫(字段不變、數(shù)據(jù)為空)只是把數(shù)據(jù)表的名改了?
謝謝!謝謝!
解析:
select * into 新表 from 舊表
使用 SELECT INTO 插入行
SELECT INTO 語句創(chuàng)建一個新表,并用 SELECT 的結(jié)果集填充該表。新表的結(jié)構(gòu)由選擇列表中表達(dá)式的特性定義,例如:
SELECT Shippers.*, Link.Address, Link.City,
Link.Region, Link.PostalCode
INTO NewShippers
FROM Shippers
JOIN LinkServer.DB.dbo.Shippers AS Link
ON (Shippers.ShipperID = Link.ShipperID)
SELECT INTO 可將幾個表或視圖中的數(shù)據(jù)組合成一個表。也可用于創(chuàng)建一個包含選自鏈接服務(wù)器的數(shù)據(jù)的新表。
‘首先,創(chuàng)建一個VB.NET項目,再點擊菜單”項目“-”添加引用“,在”Com“-”類型庫“里,選擇Microsoft.Word?14.0?Object?Library(對應(yīng)Office版本為2010),將以下代碼復(fù)制粘貼到Form1窗體替換原代碼。
’PS:以下代碼僅創(chuàng)建表格,將第行2至4列合并,添加1個文字,其他的你自己分析。
Imports?Microsoft.Office.Interop
Imports?Microsoft.Office.Interop.Word??'引入Word
Public?Class?Form1
Private?Sub?Form1_Load(sender?As?Object,?e?As?EventArgs)?Handles?MyBase.Load
Dim?DWrd?As?New?Word.Application,?DDoc?As?Word.Document?'定義Word及文檔對象
DDoc?=?DWrd.Documents.Add?'新增文檔
Dim?DTbl?As?Word.Table??'定義表格對象
DTbl?=?DDoc.Tables.Add(DDoc.Range,?7,?4)??'新增表格
DTbl.Style?=?"網(wǎng)格型"??'表格的樣式
DTbl.Cell(1,?2).Select()??'選擇起始單元格為第1行/第2列
DWrd.Selection.MoveRight(,?2,?SelectionMode.MultiExtended)??'向右擴展兩個單元格(即選擇第1行的第2至4列)
DWrd.Selection().Cells.Merge()??'單元格合并
DTbl.Cell(1,?1).Range.Text?=?1??'在第1個單元格填寫文本
DWrd.Visible?=?True?'顯示W(wǎng)ord
End?Sub
End?Class
首先,須在項目里引用: 添加引用-Com-Microsoft Excel 9.0 Object Library (這是EXCEL2000)
1 打開Excel: dim myexcel as new Excel.Application() myexcel.visible=true
2 添加新的工作簿: myexcel.Workbooks.add()
3 設(shè)定第二個工作表為活動工作表: myexcel.worksheets(2).Acivate()
4 打開指定的Excel文件: myexcel.workbooks.open("c:\my.xls")
5 顯示Excel窗口: myexcel.visible=true
6 更改Excel的標(biāo)題欄: myexcel.caption="歡迎,歡迎!"
7 為Excel的單元格賦值: myexcel.cells(1,4).value=100 此語句使Excel當(dāng)前工作表的第一行第四列,即D1單元格等于100, 也可以這樣寫: myexcel.Range("D1").value=100
8 設(shè)置指定列的寬度(單位:字符個數(shù)): myexcel.ActiveSheet.colums(1).columnwidth=20 設(shè)定當(dāng)前工作表第1列的寬度為20
9 設(shè)置指定行的高度(單位:磅): myexcel.ActiveSheet.rows(1).rowHeight=1/0.035 1磅 =0.035厘米 設(shè)置第1行的高度為1CM
10 插入分頁符: myexcel.Activesheet.rows(20).pagebreak=1 在第20行前插入分頁符
11 刪除分頁符: myexcel.Activesheet.columns(20).pagebreak=0 在第20列前刪除分頁符
12 指定邊框線的寬度: myexcel.Activesheet.range("B3:D3").borders(1).weight=3 其中borders參數(shù)指定單元格邊框的位置: 1:左 2:右 3:頂 4:底 5:斜\ 6:斜/
13 指定邊框線條的類型: myexcel.Activesheet.range("B1:D3").borders(2).linestyle=1 此語句將當(dāng)前工作表的B1:D3單元格的右邊框設(shè)置為實線 linestyle參數(shù): 1:細(xì)實線 2:細(xì)虛線 3:點虛線 4:雙細(xì)實線
14 設(shè)置頁腳: myexcel.activesheet.pagesetup.centerfooter="第p頁" 注意:設(shè)置頁眉頁腳時要保證計算機上裝有打印機,否則出錯!
15 設(shè)置頁眉: myexcel.activesheet.pagesetup.centerfooter="第p頁"
16 設(shè)置頁眉到頂斷距離為2cm: myexcel.Activesheet.pagesetup.Headermargin=2/0.035
17 設(shè)置頁腳到底端距離為2cm: myexcel.Activesheet.pagesetup.Footermargin=2/0.035
18 設(shè)置頂邊邊距為2cm: myexcel.Activesheet.pagesetup.topmargin=2/0.035
19 設(shè)置底邊邊距為2cm: myexcel.Activesheet.pagesetup.Bottommargin=2/0.035
20 設(shè)置左邊邊距為2cm: myexcel.Activesheet.pagesetup.Leftmargin=2/0.035
21 設(shè)置右邊邊距為2cm: myexcel.Activesheet.pagesetup.Rightmargin=2/0.035
22 設(shè)置頁面水平居中: myexcel.activesheet.pagesetup.CenterHorizontally=true
23 設(shè)置頁面垂直居中: myexcel.activesheet.pagesetup.Centervertically=true
24 設(shè)置頁面紙張大小 (1,窄行 8.5*11 ;39 ,寬行 14*11): myexcel.activesheet.pagesetup.papersize=1
25 打印單元格網(wǎng)格線: myexcel.activesheet.pagesetup.PrintGridlines=true
26 復(fù)制整個工作表 : myexcel.activesheet.Usedrange.Copy
27 復(fù)制指定區(qū)域 : myexcel.activesheet.range("a1:b5").Copy
28 粘貼: myexcel.worksheets("sheet2").range("A1").PasteSpecial
29 在第2行前插入一行 : myexcel.activesheet.rows(2).Insert
30 在第2列前插入一列 : myexcel.Activesheet.Columns(2).Insert
31 合并 C4:D4 單元格: myexcel.Activesheet.Range("C4:D4").Merge()
32 自動調(diào)整第2列列寬: myexcel.activesheet.Columns(2).AutoFit
33 設(shè)置字體: myexcel.Activesheet.cells(2,1).font.name="黑體"
34 設(shè)置字體大小: myexcel.Activesheet.cells(2,1).font.size=25
35 設(shè)置字體為斜體: myexcel.Activesheet.cells(2,1).font.Italic=true
36 設(shè)置字體為粗體: myexcel.Activesheet.cells(2,1).font.Bold=true
37 清除單元格內(nèi)容: myexcel.activesheet.cells(2,1).ClearContents
38 打印預(yù)覽工作表: myexcel.Activesheet.PrintPreview
39 打印工作表: myexcel.Activesheet.Printout
40 工作表另存為: myexcel.ActiveWorkbook.saveas("C:\book2.xls")
41 放棄存盤: myexcel.ActiveWorkbook.saved=false
42 關(guān)閉工作簿: myexcel.Workbooks.close
43 退出 Excel: myexcel.quit
清楚了這些命令,操作excel不就變的很輕松了!
文章名稱:vb.net設(shè)定表格語句 vbnet begininvoke
本文鏈接:http://chinadenli.net/article46/dojoheg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、動態(tài)網(wǎng)站、網(wǎng)站維護(hù)、軟件開發(fā)、App開發(fā)、服務(wù)器托管
聲明:本網(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)