利用C#读取excel的一种方法

首先是源码:
using System;
 

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.Data.SqlTypes;
using System.Data.Common;
using System.Data.Sql;
using System.Data;
namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            string constr = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =e:\\news.xls;Extended Properties=Excel 8.0";
            string sqlcmd = "select * from [NewsData]";
            OleDbCommand oc = new OleDbCommand(sqlcmd, new OleDbConnection(constr));
            OleDbDataAdapter ap = new OleDbDataAdapter(oc);
            DataSet ds = new DataSet();
            ap.Fill(ds);
            DataTable dt =  ds.Tables[0];
            int count = 0;
            foreach (DataRow dr in dt.Rows)
            {
                //Console.Write(dc.ColumnName+"  ");
                
//Console.WriteLine(dc.DataType);

                DataColumn dc = dt.Columns[0];
                {
                    Console.WriteLine(dr[dc]);
                }
                if (count !=0 )
                    break;
                count++;
            }
            Console.ReadLine();

        }
    }
}

这个例子主要是根据OleDb的方法来讲Excel文件当做数据库来访问,具体步骤如下:

(1)首先设置连接字符串: string constr = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =e:\\news.xls;Extended Properties=Excel 8.0";

其中Data Source后面应该跟着自己的文件。 

(2)然后OleDbCommend对象,这个对象就相对于命令,也就是创建你准备操作的命令。参数是命令字符串和数据库连接,对数据库操作肯定要连接到数据库上,因此命令的前一步是数据库连接,但是我们和在一个函数里写了。

(3)创建了这个命令,就会对数据库进行操作,操作的设置、进行、结果都在上面那个OleDbCommend对象中,当让我们需要从中找出来结果,这里我们利用DataAdapter,这个是个适配器,我们的操作得出的结果是一一个集,什么东东都用,适配器的作用就是对结果进行整合,给一个标准的数据集DataSet,也可以这样理解:适配器是个桥梁,A端是数据库,B端是我们要找的数据集,它起到一个适配作用,不管A端什么数据库,它都整理好提供给B端标准数据集。也有网友这么理解:而dataapater则与dataset配合,摆脱了操作数据过程中对数据库连接的依赖。一个最形象的比喻是,dataset是临时仓库,数据库是仓库,则适配器则是之间的一辆卡车,一次性从仓库中把货运到临时仓库,而不需要一件一件的来回跑。这就是其最大的好处。http://hi.baidu.com/roxxjzelbmcqxyr/item/a58f97cf8bf626d597445225

(4)对于找回来的DataSet,我们首先要获得表,关系数据库都是根据表存在,DataTable,然后通过这个DataTable可以获得Columns列的集合,以及Rows的集合。然后就可以通过行列操作获得具体的元素值。

(5)对于行列操作,详见源码 

DataRow dr = dt.Rows[0];
DataColumn dc = dt.Columns[0];
Console.WriteLine(dr[dc]);

 

posted @ 2012-10-22 23:01  lycan785  阅读(709)  评论(1编辑  收藏  举报