微软的电子表格Excel功能强大,对于一些需要时常接触财务、统计工作的用户而言,Excel的方便体会就会更深。但是,当需要将这些数据上网操作的时候,一些用户就可能感觉很麻烦,因为我们一般对数据库进行操作,对于Excel接触比较少,这时候,可能我们第一想到的就是将Excel中的数据直接导为Access或者其他数据库的数据格式。其实,完全不必要那么麻烦,因为使用ASP.NET我们可以直接操作Excel数据,和操作Access差不多。现在,我们就来看具体怎样实现。  
  
一、建立连接  
和Excel数据源建立连接与连接Access等数据库差不多,比较简单,只是在一些细节方面稍微有一些改变。最简单的,我们这样连接Excel数据源:  
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=目录\excel.xls;Extended Properties=Excel 8.0;  
上面的连接字符串可能我们很熟悉了,需要注意的是这里要设置“Extended Properties”为Excel的版本,现在已经有的版本为5.0、7.0、8.0等,一般的,5.0到7.0版本,设置这个属性为5.0;7.0以上版本,设置这个属性为8.0。这也算是一个取巧吧。  
Extended Properties还有另外一个参数,我们知道,Excel对每一列取名和Access不一样,Excel中,列的名字和数据的值没有区别的,都是放在数据区中,所以,怎样连接数据的时候来出去数据标题和数据值的关系呢?这里就可以设置一个HDR参数,HDR参数可以设置为“YES”或者“NO”,如果设置为“NO”,连接就会自动为数据列加上如“F1”“F2”等的说明,其实我们可以这样理解,如果设置为“Yes”,数据就是按照Excel的实际数据格式现实,如果设置为“NO”,会在每列数据加一个“F1”“F2”等的数据头信息。现在,我们来看具体在ASP.NET中怎样连接:  
<%@ Import Namespace="System.Data" %>  
  
<script runat="server">  
Sub Page_Load(sender as object, e as EventArgs)  
Dim objconn as New   
OleDB.OleDBConnection("Provider=Microsoft.Jet.OLEDB.4.0;  
Data Source=F:\agasp\samp\excel.xls;Extended Properties=Excel 8.0;")  
objconn.Open()  
‘数据处理  
objconn.Close()  
End Sub  
</script>  
  
二、数据处理  
以上的数据连接和操作数据库差别不大,现在,我们来看看到底怎样具体对数据进行操作。  
1、Select语句  
Select语句是所以数据操作里面最常见最常用的,现在,我们首先看最简单的取得一个数据表(WorkSheet)的所有数据,假设这个数据表(WorkSheet)名为“First”,可以这样取得所有数据:SELECT * FROM [First$]。这里,我们要注意两点:一是数据表名必须用方括符;二是数据表名字一定要加一个“$”符号来表示这是一个数据表。我们还可以限制检索数据的范围,比如我们要检索A1到D20的所有数据,可以这样检索:SELECT * FROM [SampleSheet$A1:D20],这里,使用A1:D20来限制检索范围。如果数据表第一行已经定义数据列的名字,我们可以选择需要显示的数据列来检索:SELECT 姓名 FROM [First$A1:B2]。  
以上我们看了怎样使用Select语句来检索数据表信息,尽管很简单,但是我们在具体使用中一定要注意几点:(1)针对每一列数据,定义数据的名字或者类型;比如我们在人事表中,可以定义“姓名”、“性别”等列,当然,这里的定义就是设置列的第一行值为需要定义的值。(2)注意Excel数据结构和Access的不同;在处理数据的过程中严格区别两者的差异,不要将Access数据处理SQL语句直接移植来操作Excel。  
2、Insert语句  
Insert语句在Excel中可能使用起来比较麻烦,因为Excel中,怎样来区分每一列数据呢?Access中每列数据有数据段名,Excel中没有这一项设置。看看刚才我们使用的Select语句,我们用数据列的第一行作为数据列名来检索数据,现在,我们也用第一行来区分数据列,比如可以这样插入数据:INSERT INTO [first$] (姓名,性别,年龄) valueS ('章三', '男', '23')。  
  
数据表First的所有数据,并且显示到一个DataGrid中。
3、Update语句  
Update语句和Insert语句差不多,比如我们可以这样修改更新数据:UPDATE SampleSheet$ SET Age = '24' WHERE FirstName = 'John' AND LastName = 'Albert'  
  
4、建立数据表(WorkSheet)  
和操作Access一样,我们直接听过代码来建立新的数据表:  
CREATE TABLE NewSheet ( Position char(255), Department char(255), DeptEmail char(255))  
  
三、具体实例  
现在,我们来看一个包括各种数据操作的具体实例:  
<%@ Import Namespace="System.Data" %>  
<%@ Import Namespace="System.Data.OleDB" %>  
<script runat="server">  
Sub Page_Load(sender as object, e as EventArgs)  
Dim connstr as String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\book1.xls;Extended Properties=Excel 8.0;"  
Dim objConn as New OleDbConnection(connstr)  
Dim objadap as New OleDbDataAdapter("SELECT * FROM [first$]", objconn)  
Dim ds as New DataSet()  
objconn.Open()  
objadap.Fill(ds, "ExcelData")  
dg.DataSource = ds.Tables(0).DefaultView  
dg.DataBind()  
objconn.Close()  
End Sub  
</script>  
  
<asp:DataGrid id="dg" runat="server"  
Bordercolor="black"  
gridlines="vertical"  
font-names="Arial"  
font-size="10pt"  
HeaderStyle-BackColor="#FFCC00"  
ItemStyle-BackColor="#FFCC66"  
AlternatingItemStyle-BackColor="#FFFFFF"  
AutoGenerateColumns="True">  
  
</asp:datagrid>  
以上程序提取Excel电子表格Book1的

 posted on 2006-09-13 23:40  FERRARI-FFX  阅读(1957)  评论(1编辑  收藏  举报