当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > Visual Basic .NET处理Excel表格全接触

ASP.NET
asp.net实现C#代码加亮显示
如何显示在线人数和所在位置
ASP.net生成文字图片
ASP.NET提供文件下载函数
一个简单的ASP.NET Forms 身份认证
在ASP.NET中实现多文件上传
asp.net 2.0中使用sitemapDATAsource做页面导航
通过ASP.net程序创建域帐户故障
为ASP.NET封装的SQL数据库访问类
在ASP.NET中跟踪和恢复大文件下载
SQL存储过程在.NET数据库中的应用
对“学号”、“身份证”的数字分析
把.NET程序部署到没有安装.NET Framwork的机器上
ASP.NET中同时支持简体和繁体中文
几十个ASP.NET性能优化的常用方法
.NET环境下五种邮件发送解决方案
.NET开发中正则表达式中BUG一例
.NET反射、委托技术与设计模式
.net中Windows窗体间的数据交互
ADO.NET访问Oracle 9i存储过程(上)

ASP.NET 中的 Visual Basic .NET处理Excel表格全接触


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-23   浏览: 303 ::
收藏到网摘: n/a

Visual Basic .Net处理Excel表格机理和处理Word文档一样,也是通过互操作,引入COM组件来实现的,所以前提条件是运行本文中介绍的程序的计算机必须安装Office 2000中的Excel软件。如果计算机安装的Office 2000,那么这个COM组件就是"Microsoft Excel 9.0 Object Library"。一旦引入此COM组件,Visual Basic .Net就可以向手工编辑Excel表格一样来处理它。下面就来介绍Visual Basic .Net处理Excel表格的各种典型操作,如创建表格、编辑表格等,以及从数据库中向Excel表格导入数据的实现方法。

一.本文程序设计、调试和运行的环境:

(1).微软公司视窗2000服务器版。

(2).Visual Studio .Net2003企业构建版,.Net FrameWork SDK版本号4322。

(3).Office 2000套件。

二.Visual Basic .Net处理Excel表格的基本操作及其实现方法:

在Visual Basic .Net处理Excel表格之前,首先还是要引入COM组件,具体的实现步骤可参阅本文第三节中第八步。在引入的"Microsoft Excel 9.0 Object Library"COM组件后。下面介绍在Visual Basic .Net中处理Excel表格的典型操作的实现方法:

1. 创建Excel.exe进程,显示Excel界面,创建Excel表格:

成功引入COM组件后,通过下列语句就可以创建Excel.exe进程了,Visual Basic .Net就是通过对此进程的处理来操作Excel表格:

Private AppExcel As Excel.Application = New Excel.Application

当执行完此语句后,通过任务管理器查看进程就发现多出Excel.exe进程,当此时Excel程序的运行界面并没有显示,在此语句后加入以下代码,Excel的运行界面就显示出来了:

AppExcel.Visible = True

Excel运行界面虽然显示,但其中并没有表格,下列代码是在Excel程序中创建一个新表格:

AppExcel.Application.Workbooks.Add ( True )

2. Visual Basic .Net处理Excel表格:

上文以及说过,Visual Basic .Net处理Excel表格是通过创建的Excel.exe进程来实现的。通过任务管理器看到Excel.exe进程对应上述代码中的AppExcel。以下代码就是设定Excel表格的(2,3)单元的数值为"Temp":

AppExcel.Cells ( 2 , 3 ) = " Temp "

3. 关闭Excel表格,销毁Excel.exe进程:

当编辑完Excel表格后,通过下列语句就可以关闭Excel表格,并销毁Excel.exe进程:

AppExcel.Application.Workbooks.Close ( )
'关闭Excel表格
AppExcel.Quit ( )
'销毁Excel.exe进程
以上就是Visual Basic .Net一些基本的操作方法,其他处理Excel表格的方法还有许多,但都和上面的这些方法很类似,由于篇幅所限就不一一介绍了,相信再掌握上面这些方法后,掌握它们也不会很困难。下面就来介绍一个比较实用的示例,这个示例的实现过程主要是通过上面介绍的这些基本的操作方法,此示例的功能是把Sql Server数据库中数据表的内容导入到Excel表格中。

三.Visual Basic .Net导入数据库数据到Excel表格:

通过此示例可以方便的把Sql Server数据库中数据表导入到Excel表格中,同样对于其他类型的数据库,如果也需要导入数据到Excel表格,只需要修改此示例中数据连接部分的代码就可以了。以下是在Visual Basic .Net中导入Sql Server数据库到Excel表格的具体的实现步骤:

1. 启动Visual Studio .Net。

2. 选择菜单【文件】|【新建】|【项目】后,弹出【新建项目】对话框。

3. 将【项目类型】设置为【Visual Basic项目】。

4. 将【模板】设置为【Windows应用程序】。

5. 在【名称】文本框中输入【Visual Basic .Net导入数据库数据到Excel表格】。

6. 在【位置】的文本框中输入【E:VS.NET项目】,然后单击【确定】按钮,这样在"E:VS.NET项目"目录中就产生了名称为"Visual Basic .Net中操作Word文档"的文件夹,并在里面创建了名称为"Visual Basic .Net导入数据库数据到Excel表格"的项目文件。

7. 把Visual Studio .Net的当前窗口切换到【Form1.vb(设计)】窗口,并从【工具箱】中的【Windows窗体组件】选项卡中往Form1窗体中拖入下列组件,并执行相应的操作:

五个Label组件。

五个TextBox组件。

一个Button组件,用以实现导入Sql Server数据库到Excel表格,并在这个Button组件拖入Form1的设计窗体后,双击它们,则Visual Stuido .Net会在Form1.vb文件分别产生这组件的Click事件对应的处理代码。

8. 选中【解决方案管理器】,右击【引用】,在弹出的菜单中选中【添加引用】后,按照图01所示,加入要引用的COM组件"Microsoft Excel 9.0 Object Library":

 

图01:【Visual Basic .Net导入数据库数据到Excel表格】项目【添加引用】对话框

9. 把Visual Studio .Net的当前窗口切换到Form1.vb的代码编辑窗口,并在Form1.vb文件首部添加下列代码,下列代码是导入下面使用的数据类所在的命名空间:

Imports System.Data.OleDb

10. 用下列代码替换Form1.vb中的InitializeComponent过程对应的代码,下列代码作用是初始化窗体中加入的组件:

以下为引用的内容:
<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 = "数据库服务器名:"
Me.Label2.Location = New System.Drawing.Point ( 64 , 59 )
Me.Label2.Name = "Label2"
Me.Label2.TabIndex = 1
Me.Label2.Text = "数据库名称:"
Me.Label3.Location = New System.Drawing.Point ( 64 , 90 )
Me.Label3.Name = "Label3"
Me.Label3.TabIndex = 2
Me.Label3.Text = "数据表名称:"
Me.Label4.Location = New System.Drawing.Point ( 88 , 121 )
Me.Label4.Name = "Label4"
Me.Label4.TabIndex = 3
Me.Label4.Text = "用户名:"
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 = "导出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导入数据库数据到Excel表格"
Me.ResumeLayout ( False )
End Sub

至此【Visual Basic .Net导入数据库数据到Excel表格】项目的界面设计和功能实现的准备工作就完成了,具体如图02所示:

图02:【Visual Basic .Net导入数据库数据到Excel表格】项目的设计界面

11. 用下列代码替换Form1.vb中的Button1的Click事件对应的处理代码,下列代码功能是根据使用者输入的数据库信息,建立数据连接,打开数据表,并导入到Excel表格中,如果出错则弹出出错信息:

以下为引用的内容:

Private Sub Button1_Click ( ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles Button1.Click
'创建一个 DataSet
Dim myDataSet As DataSet = New DataSet
'连接数据库,得到数据集
Try
' 设定数据连接字符串,此字符串的意思是打开Sql server数据库,服务器名称为本地 ,数据库为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
'数据连接代码,对此修改可导入其他类型数据库到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" )
'关闭此OleDbConnection
myConn.Close ( )
Catch ey As Exception
MessageBox.Show ( "连接错误! " + ey.ToString ( ) , "错误" )
End Try
Dim table As DataTable = myDataSet.Tables ( "table01" )
'创建一个空的Excel电子表格文档
Dim AppExcel As Excel.Application = New Excel.Application
AppExcel.Application.Workbooks.Add ( True )
'读取数据的字段名称,并在产生的Excel表格的第一行显示出来
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
'实现数据集到Excel表格的转换
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导入数据库数据到Excel表格】项目的全部工作就基本完成了。此时单击快捷键F5运行程序,在【数据库服务器名】中输入Sql Server数据库所在的机器名称,【数据库名】中输入要打开的数据库名称,【数据表名】中输入要导入到Excel表格的数据表名称,在【用户名】和【口令】中分别输入打开此Sql Server数据库帐户及口令后,单击【导入Excel表格】按钮,则程序会把相应的数据表导入到Excel表格中。图03和图04分别是【Visual Basic .Net导入数据库数据到Excel表格】项目的运行界面和导入数据后的Excel表格:

图03:【Visual Basic .Net导入数据库数据到Excel表格】项目的运行界面