文章主要就ADO.NET Excel读取程序详细的分析,文章中有详细的代码和介绍,喜欢研究的朋友可以复制下来作为以后编程的资料。

咱们都知道ADO.NET联系数据库,通过具体的查询用的人仍是蛮多的,为此呢给咱们介绍介绍ADO.NET Excel读取的问题。在联系数据库供给的各种目标中(表、视图、存储进程等),Excel 数据源仅供给相当于表的目标,它由指定作业簿中的作业表和界说的命名区域组成。命名区域被视为“表”,而作业表被视为“体系表”)这儿咱们将ADO.NET Excel读取也当作一个“数据库”来对待,然后使用OleDbConnection.GetOleDbSchemaTable 办法,要获取所需的架构信息,该办法获取的架构信息与ANSI SQl-92是兼容的。

学习笔记:教你运用ADO.NET Excel读取文件(ado 连接excel)  ADO.NET Excel读取 第1张


#T#留意:关于那些不熟悉 OLE DB 架构行集的人而言,它们基本上是由 ANSI SQL-92 界说的数据库结构的标准化架构。每个架构行集具有为指定结构供给界说元数据的一组列(称作 .NET 文档中的“约束列”)。这样,假如恳求架构信息(例如,列的架构信息或排序规矩的架构信息),则您会清晰知道能够得到哪种类型的数据。假如期望了解更多信息,请拜访 Appendix B:Schema Rowsets。以下是读取Excel文件内“表”界说元数据,并显现出来的的ADO.NET Excel读取程序片断:

  1. Code//读取Excel数据,填充DataSet//衔接字符串
  2. stringxlsPath=Server.MapPath("~/app_data/somefile.xls");
  3. stringconnStr="Provider=Microsoft.Jet.OLEDB.4.0;"+
  4. "ExtendedProperties=\"Excel8.0;HDR=No;IMEX=1\";
  5. "+//指定扩展特点为
  6. MicrosoftExcel8.0(97)9.0(2000)10.0(2002),而且***行作为数据回来,且以文本方法读取
  7. "datasource="+xlsPath;stringsql_F="SELECT*FROM[{0}]";
  8. OleDbConnectionconn=null;OleDbDataAdapterda=null;
  9. DataTabletblSchema=null;IList<string>tblNames=null;
  10. //初始化衔接,并翻开conn=newOleDbConnection(connStr);conn.Open();
  11. //获取数据源的表界说元数据
  12. //tblSchema=conn.GetSchema("Tables");
  13. tblSchema=conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,newobject[]{null,null,null,"TABLE"});
  14. GridView1.DataSource=tblSchema;GridView1.DataBind();
  15. //封闭衔接conn.Close();

接着是一段使用“架构信息”动态读取Excel内部界说的表单或许命名区域的程序片断:

  1. Codexcel数据,填充DataSet//衔接字符串
  2. stringxlsPath=Server.MapPath("~/app_data/somefile.xls");
  3. stringconnStr="Provider=Microsoft.Jet.OLEDB.4.0;"+
  4. "ExtendedProperties=\"Excel8.0;HDR=No;IMEX=1\";
  5. "+//指定扩展特点为MicrosoftExcel8.0(97)9.0(2000)10.0(2002),而且***行作为数据回来,且以文本方法读取
  6. "datasource="+xlsPath;stringsql_F="SELECT*FROM[{0}]";
  7. OleDbConnectionconn=null;OleDbDataAdapterda=null;DataTabletblSchema=null;
  8. IList<string>tblNames=null;
  9. //初始化衔接,并翻开conn=newOleDbConnection(connStr);
  10. conn.Open();//获取数据源的表界说元数据
  11. //tblSchema=conn.GetSchema("Tables");
  12. tblSchema=conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,newobject[]{null,null,null,"TABLE"});
  13. //GridView1.DataSource=tblSchema;//GridView1.DataBind();
  14. //封闭衔接//conn.Close();
  15. tblNames=newList<string>();
  16. foreach(DataRowrowintblSchema.Rows)
  17. {
  18. tblNames.Add((string)row["TABLE_NAME"]);
  19. //读取表名}//初始化适配器da=newOleDbDataAdapter();
  20. //预备数据,导入DataSetDataSetds=newDataSet();
  21. foreach(stringtblNameintblNames)
  22. {
  23. da.SelectCommand=newOleDbCommand(String.Format(sql_F,tblName),conn);
  24. try{
  25. da.Fill(ds,tblName);
  26. }
  27. catch{
  28. //封闭衔接
  29. if(conn.State==ConnectionState.Open){
  30. conn.Close();
  31. }throw;
  32. }
  33. }//封闭衔接if(conn.State==ConnectionState.Open)
  34. {
  35. conn.Close();}//对导入DataSet的每张sheet进行处理
  36. //这儿仅做显现GridView1.DataSource=ds.Tables[0];GridView1.DataBind();
  37. GridView2.DataSource=ds.Tables[1];GridView2.DataBind();
  38. //morecodes
  39. //这儿咱们就不需要对SELEC句子进行“硬编码”,能够根据需要动态的结构FROM字句的“表名”。


转载请说明出处
知优网 » 学习笔记:教你运用ADO.NET Excel读取文件(ado 连接excel)

发表评论

您需要后才能发表评论