10.4 访问Excel

  Excel同Access数据库一样,都是Microsoft Office办公软件中的一个组件,Excel主要用来处理电子表格,同时Excel也能够方便的进行数据存储,并提供强大的运算能力和统计功能,经常使用于办公环境。

10.4.1 Excel 简介
  在办公环境中,大部分的办公人员都使用Excel进行报表处理,所以,Excel中存储着大量的信息。这些信息对决策者或者是办公自动化管理而言,都比较重要,在办公室应用中,很多文档都是通过Excel保存在计算机中的,所以在编写应用程序时,常常需要访问Excel来访问和存储数据。但是,开发人员会发现通过应用程序访问Excel是一件非常困难的事情。
  因为Excel并不是数据库,所以Excel不支持相关的数据结构,所以当开发人员需要对Excel进行数据访问时,会变得比较困难。但是从另一个角度来看,Excel文件是由一张张工作表组成,其结构很像数据库中的表,所以,应该能够通过相应的手段让应用程序访问Excel。
  ASP.NET提供了一些类和方法用于连接和访问Excel数据库,极大的方便了开发人员的开发,简化了开发代码。

10.4.2 建立连接
  ASP.NET访问Excel通常有两种方法,一种是使用ODBC .NET Data Provider进行访问,另一种则是使用OLE DB .NET Data Provider进行访问。这两种访问方式在原理上基本相同,同ADO.NET其他对象一样,访问和操作Excel文件时,都必须使用Connection对象进行连接,然后使用Command对象执行SQL命令。
1.使用DSN连接Excel数据源
  首先,必须创建一个Excel数据源,例如data.xls,并手动增加若干数据,如图10-16所示。
创建Excel数据源
图10-16 创建Excel数据源
  数据源创建完毕后,则需要在【数据源(ODBC)】中添加支持Excel的数据源,如图10-17、10-18所示。
创建数据源
图10-17 创建数据源
数据源安装
图10-18 数据源安装
  添加数据源之后,需要配置数据源,如图10-17所示,则需要选择相应数据文件,单击【选择工作簿】按钮选择数据文件的位置,如图10-19所示,配置完毕后,单击【确定】按钮,即可配置成功。
选择数据文件
图10-19 选择数据文件
  配置完成后,就可以通过ASP.NET应用程序访问Excel数据源,示例代码如下所示。
+展开
-C#
        protected void Page_Load(object sender, EventArgs e)
        {
            string str = @"DSN=myexcel";//使用ODBC连接数据源
            OdbcConnection con = new OdbcConnection(str); //新建连接对象
            try
            {
                con.Open();//尝试打开连接
                Label1.Text = "连接成功";//显式连接信息
                con.Close();//关闭连接
            }
            catch
            {
                Label1.Text = "连接失败";//抛出异常
            }
        }

  执行数据连接后,就可以通过SQL语句执行数据源遍历,示例代码如下所示。
+展开
-C#
        protected void Page_Load(object sender, EventArgs e)
        {
            string str = @"DSN=myexcel";
            OdbcConnection con = new OdbcConnection(str);
            try
            {
                con.Open();//打开连接
                Response.Write("连接成功<hr/>");//输出HTML
                OdbcDataAdapter da = new OdbcDataAdapter("select * from [Sheet1$]",con);//创建适配器
                DataSet ds = new DataSet();//创建DataSet数据集
                int count=da.Fill(ds, "exceltable");//填充数据集
                for (int i = 0; i < count; i++)//遍历数据
                {
                    Response.Write(ds.Tables["exceltable"].Rows[i]["姓名"].ToString()+"<hr/>");//输出数据
                }
            }
            catch(Exception ee)//抛出异常
            {
                Response.Write(ee.ToString());
            }
        }

  上述代码使用了SQL对Excel数据源中的数据进行查询和遍历,运行结果如图10-20所示。
遍历Excel数据源
图10-20 遍历Excel数据源
2.使用OLE DB .NET Data Provider连接Excel数据源
  使用OLE DB .NET Data Provider连接和操作Excel数据源,同其他ADO.NET数据源访问方法类似,同样是使用OleDbConnection对象进行数据连接,使用OleDbCommand对象进行数据访问,示例代码如下所示。
+展开
-C#
        protected void Page_Load(object sender, EventArgs e)
        {
            string str = 
            @"Provider=Microsoft.Jet.OleDb 4.0;Data 
            Source="+Server.MapPath("data.xls")+";Extended Properties= Excel 8.0;";//设置Excel连接串
            OleDbConnection con = new OleDbConnection(str);//创建连接对象
            try
            {
                con.Open();//尝试打开连接
                Label1.Text = "连接成功";//显式连接信息
                con.Close();//关闭连接
            }
            catch
            {
                Label1.Text = "连接失败";//抛出异常
            }
        }

  上述代码通过使用OLE DB .NET Data Provider连接字串进行Excel数据源的连接,在连接完成后,其数据操作的方法都与ADO.NET对象的操作方法相同。

加支付宝好友偷能量挖...


评论(0)网络
阅读(75)喜欢(0)Asp.Net/C#/WCF