成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

學(xué)習(xí)筆記:教你使用ADO.NET Excel讀取文件

開(kāi)發(fā) 后端
文章主要就ADO.NET Excel讀取程序詳細(xì)的分析,文章中有詳細(xì)的代碼和介紹,喜歡研究的朋友可以復(fù)制下來(lái)作為以后編程的資料。

大家都知道ADO.NET關(guān)系數(shù)據(jù)庫(kù),經(jīng)過(guò)詳細(xì)的調(diào)查用的人還是蠻多的,為此呢給大家介紹介紹ADO.NET Excel讀取的問(wèn)題。在關(guān)系數(shù)據(jù)庫(kù)提供的各種對(duì)象中(表、視圖、存儲(chǔ)過(guò)程等),Excel 數(shù)據(jù)源僅提供相當(dāng)于表的對(duì)象,它由指定工作簿中的工作表和定義的命名區(qū)域組成。命名區(qū)域被視為“表”,而工作表被視為“系統(tǒng)表”)這里我們將ADO.NET Excel讀取也當(dāng)作一個(gè)“數(shù)據(jù)庫(kù)”來(lái)對(duì)待,然后利用OleDbConnection.GetOleDbSchemaTable 方法,要獲取所需的架構(gòu)信息,該方法獲取的架構(gòu)信息與ANSI SQl-92是兼容的。


#T#注意:對(duì)于那些不熟悉 OLE DB 架構(gòu)行集的人而言,它們基本上是由 ANSI SQL-92 定義的數(shù)據(jù)庫(kù)構(gòu)造的標(biāo)準(zhǔn)化架構(gòu)。每個(gè)架構(gòu)行集具有為指定構(gòu)造提供定義元數(shù)據(jù)的一組列(稱作 .NET 文檔中的“限制列”)。這樣,如果請(qǐng)求架構(gòu)信息(例如,列的架構(gòu)信息或排序規(guī)則的架構(gòu)信息),則您會(huì)明確知道可以得到哪種類型的數(shù)據(jù)。如果希望了解更多信息,請(qǐng)?jiān)L問(wèn) Appendix B:Schema Rowsets。以下是讀取Excel文件內(nèi)“表”定義元數(shù)據(jù),并顯示出來(lái)的的ADO.NET Excel讀取程序片斷:

  1. Code// 讀取Excel數(shù)據(jù),填充DataSet// 連接字符串      
  2. string xlsPath = Server.MapPath("~/app_data/somefile.xls");  
  3. string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" +                  
  4. "Extended Properties=\"Excel 8.0;HDR=No;IMEX=1\";  
  5. " + // 指定擴(kuò)展屬性為   
  6. Microsoft Excel 8.0 (97) 9.0 (2000) 10.0 (2002),并且***行作為數(shù)據(jù)返回,且以文本方式讀取                  
  7. "data source=" + xlsPath;string sql_F = "SELECT * FROM [{0}]";  
  8. OleDbConnection conn = null;OleDbDataAdapter da = null;  
  9. DataTable tblSchema = null;IList<string> tblNames = null;  
  10. // 初始化連接,并打開(kāi)conn = new OleDbConnection(connStr);conn.Open();  
  11. // 獲取數(shù)據(jù)源的表定義元數(shù)據(jù)                          
  12. //tblSchema = conn.GetSchema("Tables");  
  13. tblSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });  
  14. GridView1.DataSource = tblSchema;GridView1.DataBind();  
  15. // 關(guān)閉連接conn.Close(); 

接著是一段利用“架構(gòu)信息”動(dòng)態(tài)讀取Excel內(nèi)部定義的表單或者命名區(qū)域的程序片斷:

  1. Codexcel數(shù)據(jù),填充DataSet// 連接字符串   
  2. string xlsPath = Server.MapPath("~/app_data/somefile.xls");  
  3. string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" +                  
  4. "Extended Properties=\"Excel 8.0;HDR=No;IMEX=1\";  
  5. " + // 指定擴(kuò)展屬性為 Microsoft Excel 8.0 (97) 9.0 (2000) 10.0 (2002),并且***行作為數(shù)據(jù)返回,且以文本方式讀取                 
  6. "data source=" + xlsPath;string sql_F = "SELECT * FROM [{0}]";  
  7. OleDbConnection conn = null;OleDbDataAdapter da = null;DataTable tblSchema = null;  
  8. IList<string> tblNames = null;  
  9. // 初始化連接,并打開(kāi)conn = new OleDbConnection(connStr);  
  10. conn.Open();// 獲取數(shù)據(jù)源的表定義元數(shù)據(jù)                          
  11. //tblSchema = conn.GetSchema("Tables");  
  12. tblSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });  
  13. //GridView1.DataSource = tblSchema;//GridView1.DataBind();  
  14. // 關(guān)閉連接//conn.Close();  
  15. tblNames = new List<string>();  
  16. foreach (DataRow row in tblSchema.Rows)   
  17. {      
  18. tblNames.Add((string)row["TABLE_NAME"]);   
  19. // 讀取表名}// 初始化適配器da = new OleDbDataAdapter();  
  20. // 準(zhǔn)備數(shù)據(jù),導(dǎo)入DataSetDataSet ds = new DataSet();  
  21. foreach (string tblName in tblNames)  
  22. {      
  23. da.SelectCommand = new OleDbCommand(String.Format(sql_F, tblName), conn);     
  24. try {          
  25. da.Fill(ds, tblName);   
  26. }     
  27. catch {          
  28. // 關(guān)閉連接          
  29. if (conn.State == ConnectionState.Open) {         
  30. conn.Close();         
  31. }throw;     
  32. }  
  33. }// 關(guān)閉連接if (conn.State == ConnectionState.Open)  
  34. {   
  35. conn.Close();}// 對(duì)導(dǎo)入DataSet的每張sheet進(jìn)行處理          
  36. // 這里僅做顯示GridView1.DataSource = ds.Tables[0];GridView1.DataBind();  
  37. GridView2.DataSource = ds.Tables[1];GridView2.DataBind();  
  38. // more codes  
  39. // 這里我們就不需要對(duì)SELEC 語(yǔ)句進(jìn)行“硬編碼”,可以根據(jù)需要?jiǎng)討B(tài)的構(gòu)造FROM 字句的“表名”。 


 

責(zé)任編輯:田樹(shù) 來(lái)源: 博客
相關(guān)推薦

2009-11-04 17:03:55

ADO.NET Exc

2009-11-12 10:06:01

ADO.NET讀取數(shù)據(jù)

2009-11-13 09:30:28

2009-12-28 15:11:36

ADO.NET專家

2009-11-11 09:23:38

ADO.NET Con

2009-11-11 14:04:14

ADO.NET連接池

2009-11-13 14:29:13

ADO.NET Mer

2009-11-12 13:26:56

使用ADO.NET參數(shù)

2009-12-31 10:47:05

ADO.net INS

2011-05-20 17:05:59

ADO.NET

2009-11-11 10:49:39

ADO.NET ADO

2009-11-13 09:45:54

ADO.NET程序集

2009-12-22 09:50:23

ADO.NET學(xué)習(xí)

2009-12-22 16:42:57

ADO.NET研究

2009-12-22 17:43:26

ADO.Net技術(shù)

2009-12-24 09:26:01

ADO.Net Tea

2009-12-28 13:47:31

ADO.NET對(duì)象

2009-11-04 08:38:30

ADO.NET庫(kù)文件

2009-12-22 10:58:50

ADO.NET類

2009-11-13 10:10:07

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩三级视频 | 激情五月激情综合网 | 青青伊人久久 | av超碰 | www.日韩高清 | 国产精品福利网站 | 欧美日韩综合一区 | 国产亚洲一区二区三区 | 国产精品久久久久久久久久免费看 | 久久久.com | 中国一级特黄视频 | 福利片在线观看 | 国产美女福利在线观看 | 亚洲人成人一区二区在线观看 | av黄色免费| 九色视频网站 | 亚洲精品久久久久久国产精华液 | 成人黄色电影在线播放 | 精品一区二区三区入口 | 欧美精品久久一区 | 亚洲自拍偷拍免费视频 | 成人av资源在线 | 久热爱 | 一级黄色影片在线观看 | 另类一区 | 亚洲一区二区三区欧美 | 亚洲一区二区三区视频免费观看 | 韩日中文字幕 | 91aiai| 亚洲国产一区二区三区 | 亚洲精品久久久9婷婷中文字幕 | 久久久www成人免费无遮挡大片 | 亚洲精品一区中文字幕乱码 | 99精品欧美一区二区三区 | 久久国产免费看 | 日韩中文一区 | 天天射中文 | 国产精品日日做人人爱 | 日韩欧美三级电影在线观看 | 免费九九视频 | 国产区一区 |