Visual Basic .NET处理Excle表格全接触
一.本文程序設(shè)計(jì)、調(diào)試和運(yùn)行的環(huán)境:
(1).微軟公司視窗2000服務(wù)器版。
(2).Visual Studio .Net2003企業(yè)構(gòu)建版,.Net FrameWork SDK版本號(hào)4322。
(3).Office 2000套件。
二.Visual Basic .Net處理Excel表格的基本操作及其實(shí)現(xiàn)方法:
在Visual Basic .Net處理Excel表格之前,首先還是要引入COM組件,具體的實(shí)現(xiàn)步驟可參閱本文第三節(jié)中第八步。在引入的Microsoft Excel 9.0 Object LibraryCOM組件后。下面介紹在Visual Basic .Net中處理Excel表格的典型操作的實(shí)現(xiàn)方法:
1. 創(chuàng)建Excel.exe進(jìn)程,顯示Excel界面,創(chuàng)建Excel表格:
成功引入COM組件后,通過(guò)下列語(yǔ)句就可以創(chuàng)建Excel.exe進(jìn)程了,Visual Basic .Net就是通過(guò)對(duì)此進(jìn)程的處理來(lái)操作Excel表格:
Private AppExcel As Excel.Application = New Excel.Application
當(dāng)執(zhí)行完此語(yǔ)句后,通過(guò)任務(wù)管理器查看進(jìn)程就發(fā)現(xiàn)多出Excel.exe進(jìn)程,當(dāng)此時(shí)Excel程序的運(yùn)行界面并沒(méi)有顯示,在此語(yǔ)句后加入以下代碼,Excel的運(yùn)行界面就顯示出來(lái)了:
AppExcel.Visible = True
Excel運(yùn)行界面雖然顯示,但其中并沒(méi)有表格,下列代碼是在Excel程序中創(chuàng)建一個(gè)新表格:
AppExcel.Application.Workbooks.Add ( True )
2. Visual Basic .Net處理Excel表格:
上文以及說(shuō)過(guò),Visual Basic .Net處理Excel表格是通過(guò)創(chuàng)建的Excel.exe進(jìn)程來(lái)實(shí)現(xiàn)的。通過(guò)任務(wù)管理器看到Excel.exe進(jìn)程對(duì)應(yīng)上述代碼中的AppExcel。以下代碼就是設(shè)定Excel表格的(2,3)單元的數(shù)值為T(mén)emp:
AppExcel.Cells ( 2 , 3 ) = Temp
3. 關(guān)閉Excel表格,銷(xiāo)毀Excel.exe進(jìn)程:
當(dāng)編輯完Excel表格后,通過(guò)下列語(yǔ)句就可以關(guān)閉Excel表格,并銷(xiāo)毀Excel.exe進(jìn)程:
AppExcel.Application.Workbooks.Close ( )
'關(guān)閉Excel表格
AppExcel.Quit ( )
'銷(xiāo)毀Excel.exe進(jìn)程
以上就是Visual Basic .Net一些基本的操作方法,其他處理Excel表格的方法還有許多,但都和上面的這些方法很類(lèi)似,由于篇幅所限就不一一介紹了,相信再掌握上面這些方法后,掌握它們也不會(huì)很困難。下面就來(lái)介紹一個(gè)比較實(shí)用的示例,這個(gè)示例的實(shí)現(xiàn)過(guò)程主要是通過(guò)上面介紹的這些基本的操作方法,此示例的功能是把Sql Server數(shù)據(jù)庫(kù)中數(shù)據(jù)表的內(nèi)容導(dǎo)入到Excel表格中。
三.Visual Basic .Net導(dǎo)入數(shù)據(jù)庫(kù)數(shù)據(jù)到Excel表格:
通過(guò)此示例可以方便的把Sql Server數(shù)據(jù)庫(kù)中數(shù)據(jù)表導(dǎo)入到Excel表格中,同樣對(duì)于其他類(lèi)型的數(shù)據(jù)庫(kù),如果也需要導(dǎo)入數(shù)據(jù)到Excel表格,只需要修改此示例中數(shù)據(jù)連接部分的代碼就可以了。以下是在Visual Basic .Net中導(dǎo)入Sql Server數(shù)據(jù)庫(kù)到Excel表格的具體的實(shí)現(xiàn)步驟:
1. 啟動(dòng)Visual Studio .Net。
2. 選擇菜單【文件】|【新建】|【項(xiàng)目】后,彈出【新建項(xiàng)目】對(duì)話框。
3. 將【項(xiàng)目類(lèi)型】設(shè)置為【Visual Basic項(xiàng)目】。
4. 將【模板】設(shè)置為【W(wǎng)indows應(yīng)用程序】。
5. 在【名稱(chēng)】文本框中輸入【Visual Basic .Net導(dǎo)入數(shù)據(jù)庫(kù)數(shù)據(jù)到Excel表格】。
6. 在【位置】的文本框中輸入【E:\VS.NET項(xiàng)目】,然后單擊【確定】按鈕,這樣在E:\VS.NET項(xiàng)目目錄中就產(chǎn)生了名稱(chēng)為Visual Basic .Net中操作Word文檔的文件夾,并在里面創(chuàng)建了名稱(chēng)為Visual Basic .Net導(dǎo)入數(shù)據(jù)庫(kù)數(shù)據(jù)到Excel表格的項(xiàng)目文件。
7. 把Visual Studio .Net的當(dāng)前窗口切換到【Form1.vb(設(shè)計(jì))】窗口,并從【工具箱】中的【W(wǎng)indows窗體組件】選項(xiàng)卡中往Form1窗體中拖入下列組件,并執(zhí)行相應(yīng)的操作:
五個(gè)Label組件。
五個(gè)TextBox組件。
一個(gè)Button組件,用以實(shí)現(xiàn)導(dǎo)入Sql Server數(shù)據(jù)庫(kù)到Excel表格,并在這個(gè)Button組件拖入Form1的設(shè)計(jì)窗體后,雙擊它們,則Visual Stuido .Net會(huì)在Form1.vb文件分別產(chǎn)生這組件的Click事件對(duì)應(yīng)的處理代碼。
8. 選中【解決方案管理器】,右擊【引用】,在彈出的菜單中選中【添加引用】后,按照?qǐng)D01所示,加入要引用的COM組件Microsoft Excel 9.0 Object Library:
圖01:【Visual Basic .Net導(dǎo)入數(shù)據(jù)庫(kù)數(shù)據(jù)到Excel表格】項(xiàng)目【添加引用】對(duì)話框
9. 把Visual Studio .Net的當(dāng)前窗口切換到Form1.vb的代碼編輯窗口,并在Form1.vb文件首部添加下列代碼,下列代碼是導(dǎo)入下面使用的數(shù)據(jù)類(lèi)所在的命名空間:
Imports System.Data.OleDb
10. 用下列代碼替換Form1.vb中的InitializeComponent過(guò)程對(duì)應(yīng)的代碼,下列代碼作用是初始化窗體中加入的組件:
<System.Diagnostics.DebuggerStepThrough ( ) > Private Sub InitializeComponent ( )
Me.Label1 = New System.Windows.Forms.Label
Me.Label2 = New System.Windows.Forms.Label
Me.Label3 = New System.Windows.Forms.Label
Me.Label4 = New System.Windows.Forms.Label
Me.Label5 = New System.Windows.Forms.Label
Me.TextBox1 = New System.Windows.Forms.TextBox
Me.TextBox2 = New System.Windows.Forms.TextBox
Me.TextBox3 = New System.Windows.Forms.TextBox
Me.TextBox5 = New System.Windows.Forms.TextBox
Me.Button1 = New System.Windows.Forms.Button
Me.TextBox4 = New System.Windows.Forms.TextBox
Me.SuspendLayout ( )
Me.Label1.Location = New System.Drawing.Point ( 40 , 28 )
Me.Label1.Name = Label1
Me.Label1.Size = New System.Drawing.Size ( 114 , 23 )
Me.Label1.TabIndex = 0
Me.Label1.Text = 數(shù)據(jù)庫(kù)服務(wù)器名:
Me.Label2.Location = New System.Drawing.Point ( 64 , 59 )
Me.Label2.Name = Label2
Me.Label2.TabIndex = 1
Me.Label2.Text = 數(shù)據(jù)庫(kù)名稱(chēng):
Me.Label3.Location = New System.Drawing.Point ( 64 , 90 )
Me.Label3.Name = Label3
Me.Label3.TabIndex = 2
Me.Label3.Text = 數(shù)據(jù)表名稱(chēng):
Me.Label4.Location = New System.Drawing.Point ( 88 , 121 )
Me.Label4.Name = Label4
Me.Label4.TabIndex = 3
Me.Label4.Text = 用戶(hù)名:
Me.Label5.Location = New System.Drawing.Point ( 98 , 152 )
Me.Label5.Name = Label5
Me.Label5.TabIndex = 4
Me.Label5.Text = 口令:
Me.TextBox1.Location = New System.Drawing.Point ( 160 , 26 )
Me.TextBox1.Name = TextBox1
Me.TextBox1.Size = New System.Drawing.Size ( 148 , 21 )
Me.TextBox1.TabIndex = 5
Me.TextBox1.Text =
Me.TextBox2.Location = New System.Drawing.Point ( 160 , 56 )
Me.TextBox2.Name = TextBox2
Me.TextBox2.Size = New System.Drawing.Size ( 148 , 21 )
Me.TextBox2.TabIndex = 6
Me.TextBox2.Text =
Me.TextBox3.Location = New System.Drawing.Point ( 160 , 86 )
Me.TextBox3.Name = TextBox3
Me.TextBox3.Size = New System.Drawing.Size ( 148 , 21 )
Me.TextBox3.TabIndex = 7
Me.TextBox3.Text =
Me.TextBox5.Location = New System.Drawing.Point ( 160 , 146 )
Me.TextBox5.Name = TextBox5
Me.TextBox5.PasswordChar = Microsoft.VisualBasic.ChrW ( 42 )
Me.TextBox5.Size = New System.Drawing.Size ( 148 , 21 )
Me.TextBox5.TabIndex = 9
Me.TextBox5.Text =
Me.Button1.Location = New System.Drawing.Point ( 120 , 198 )
Me.Button1.Name = Button1
Me.Button1.Size = New System.Drawing.Size ( 126 , 36 )
Me.Button1.TabIndex = 10
Me.Button1.Text = 導(dǎo)出Excle表格
Me.TextBox4.Location = New System.Drawing.Point ( 160 , 116 )
Me.TextBox4.Name = TextBox4
Me.TextBox4.Size = New System.Drawing.Size ( 148 , 21 )
Me.TextBox4.TabIndex = 8
Me.TextBox4.Text =
Me.AutoScaleBaseSize = New System.Drawing.Size ( 6 , 14 )
Me.ClientSize = New System.Drawing.Size ( 374 , 271 )
Me.Controls.Add ( Me.Button1 )
Me.Controls.Add ( Me.TextBox5 )
Me.Controls.Add ( Me.TextBox4 )
Me.Controls.Add ( Me.TextBox3 )
Me.Controls.Add ( Me.TextBox2 )
Me.Controls.Add ( Me.TextBox1 )
Me.Controls.Add ( Me.Label5 )
Me.Controls.Add ( Me.Label4 )
Me.Controls.Add ( Me.Label3 )
Me.Controls.Add ( Me.Label2 )
Me.Controls.Add ( Me.Label1 )
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
Me.MaximizeBox = False
Me.Name = Form1
Me.Text = Visual Basic .Net導(dǎo)入數(shù)據(jù)庫(kù)數(shù)據(jù)到Excel表格
Me.ResumeLayout ( False )
End Sub
至此【Visual Basic .Net導(dǎo)入數(shù)據(jù)庫(kù)數(shù)據(jù)到Excel表格】項(xiàng)目的界面設(shè)計(jì)和功能實(shí)現(xiàn)的準(zhǔn)備工作就完成了,具體如圖02所示:
圖02:【Visual Basic .Net導(dǎo)入數(shù)據(jù)庫(kù)數(shù)據(jù)到Excel表格】項(xiàng)目的設(shè)計(jì)界面
11. 用下列代碼替換Form1.vb中的Button1的Click事件對(duì)應(yīng)的處理代碼,下列代碼功能是根據(jù)使用者輸入的數(shù)據(jù)庫(kù)信息,建立數(shù)據(jù)連接,打開(kāi)數(shù)據(jù)表,并導(dǎo)入到Excel表格中,如果出錯(cuò)則彈出出錯(cuò)信息:
Private Sub Button1_Click ( ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles Button1.Click
'創(chuàng)建一個(gè) DataSet
Dim myDataSet As DataSet = New DataSet
'連接數(shù)據(jù)庫(kù),得到數(shù)據(jù)集
Try
' 設(shè)定數(shù)據(jù)連接字符串,此字符串的意思是打開(kāi)Sql server數(shù)據(jù)庫(kù),服務(wù)器名稱(chēng)為本地 ,數(shù)據(jù)庫(kù)為temp
Dim strCon As String = Provider = SQLOLEDB.1; Persist Security Info = False; User ID = & TextBox4.Text & ;PSW= & TextBox5.Text _
& ; Initial Catalog = & TextBox2.Text & ;Data Source = & TextBox1.Text
'數(shù)據(jù)連接代碼,對(duì)此修改可導(dǎo)入其他類(lèi)型數(shù)據(jù)庫(kù)到Excle表格
Dim myConn As OleDbConnection = New OleDbConnection ( strCon )
myConn.Open ( )
Dim strCom As String = SELECT * FROM & TextBox3.Text
Dim myCommand As OleDbDataAdapter = New OleDbDataAdapter ( strCom , myConn )
myCommand.Fill ( myDataSet , table01 )
'關(guān)閉此OleDbConnection
myConn.Close ( )
Catch ey As Exception
MessageBox.Show ( 連接錯(cuò)誤! + ey.ToString ( ) , 錯(cuò)誤 )
End Try
Dim table As DataTable = myDataSet.Tables ( table01 )
'創(chuàng)建一個(gè)空的Excel電子表格文檔
Dim AppExcel As Excel.Application = New Excel.Application
AppExcel.Application.Workbooks.Add ( True )
'讀取數(shù)據(jù)的字段名稱(chēng),并在產(chǎn)生的Excel表格的第一行顯示出來(lái)
Dim colIndex As Integer = 0
Dim col As DataColumn = New DataColumn
For Each col In table.Columns
colIndex = colIndex + 1
AppExcel.Cells ( 1 , colIndex ) = col.ColumnName
Next
'實(shí)現(xiàn)數(shù)據(jù)集到Excel表格的轉(zhuǎn)換
Dim rowIndex As Integer = 1
Dim row As DataRow
For Each row In table.Rows
rowIndex = rowIndex + 1
colIndex = 0
Dim col1 As DataColumn
For Each col1 In table.Columns
colIndex = colIndex + 1
AppExcel.Cells ( rowIndex , colIndex ) = row ( col1.ColumnName ) .ToString ( )
Next
Next
AppExcel.Visible = True
End Sub
至此在上述步驟都正確完成后,【Visual Basic .Net導(dǎo)入數(shù)據(jù)庫(kù)數(shù)據(jù)到Excel表格】項(xiàng)目的全部工作就基本完成了。此時(shí)單擊快捷鍵F5運(yùn)行程序,在【數(shù)據(jù)庫(kù)服務(wù)器名】中輸入Sql Server數(shù)據(jù)庫(kù)所在的機(jī)器名稱(chēng),【數(shù)據(jù)庫(kù)名】中輸入要打開(kāi)的數(shù)據(jù)庫(kù)名稱(chēng),【數(shù)據(jù)表名】中輸入要導(dǎo)入到Excel表格的數(shù)據(jù)表名稱(chēng),在【用戶(hù)名】和【口令】中分別輸入打開(kāi)此Sql Server數(shù)據(jù)庫(kù)帳戶(hù)及口令后,單擊【導(dǎo)入Excel表格】按鈕,則程序會(huì)把相應(yīng)的數(shù)據(jù)表導(dǎo)入到Excel表格中。圖03和圖04分別是【Visual Basic .Net導(dǎo)入數(shù)據(jù)庫(kù)數(shù)據(jù)到Excel表格】項(xiàng)目的運(yùn)行界面和導(dǎo)入數(shù)據(jù)后的Excel表格:
圖03:【Visual Basic .Net導(dǎo)入數(shù)據(jù)庫(kù)數(shù)據(jù)到Excel表格】項(xiàng)目的運(yùn)行界面
圖04:導(dǎo)入Sql Server數(shù)據(jù)庫(kù)數(shù)據(jù)后形成的Excel表格
四.總結(jié):
本文通過(guò)一個(gè)實(shí)用的示例介紹用Visual Basic .Net處理Excel表格的各種典型操作的實(shí)現(xiàn),此示例能夠完成從Sql Server數(shù)據(jù)庫(kù)導(dǎo)出數(shù)據(jù)表中的數(shù)據(jù)到Excel表格。COM組件是一種現(xiàn)成的豐富資源,當(dāng).Net FrameWork SDK無(wú)法對(duì)您解決問(wèn)題有所幫助時(shí),也許借助COM就是一條捷徑。最后希望本文能夠?qū)δ莆赵赩isual Basic .Net中 COM組件的使用方法。有所幫助。 轉(zhuǎn)自:動(dòng)態(tài)網(wǎng)制作指南 www.xue163.com
轉(zhuǎn)載于:https://www.cnblogs.com/Nina-piaoye/archive/2006/08/31/491517.html
總結(jié)
以上是生活随笔為你收集整理的Visual Basic .NET处理Excle表格全接触的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: yum 下载RPM包而不进行安装
- 下一篇: 一些部署django用到的linux命令