源码:
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是临时仓库,数据库是仓库,则适配器则是之间的一辆卡车,一次性从仓库中把货运到临时仓库,而不需要一件一件的来回跑。这就是其最大的好处。
(4)对于找回来的DataSet,我们首先要获得表,关系数据库都是根据表存在,DataTable,然后通过这个DataTable可以获得Columns列的集合,以及Rows的集合。然后就可以通过行列操作获得具体的元素值。
(5)对于行列操作,详见源码
DataRow dr = dt.Rows[0];
DataColumn dc = dt.Columns[0];