您好,登錄后才能下訂單哦!
這篇文章主要介紹如何讀取ADO.NET Excel數(shù)據(jù)文件,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
我們用ADO.NET操作數(shù)據(jù)庫,我們就會更Excel打交道,這是避免不了的?,F(xiàn)在要介紹是如何動態(tài)的讀取ADO.NET Excel數(shù)據(jù),這里的動態(tài)指的是事先不知道Excel文件的是什么樣的結構,或者無法預測,比如一張.xls文件有多少張sheet,而且每張sheet的結構可能都不一樣等等。其實我們可以通過獲取Excel的“架構信息”來動態(tài)的構造查詢語句。這里的“架構信息”與數(shù)據(jù)庫領域的“數(shù)據(jù)庫架構信息”意義相同(也稱“元數(shù)據(jù)”),對于整個數(shù)據(jù)庫,這些“元數(shù)據(jù)”通常包括數(shù)據(jù)庫或可通過數(shù)據(jù)庫中的數(shù)據(jù)源、表和視圖得到的目錄以及所存在的約束等;而對于數(shù)據(jù)庫中的表,架構信息包括主鍵、列和自動編號字段等。
在關系數(shù)據(jù)庫提供的各種對象中(表、視圖、存儲過程等),ADO.NET Excel數(shù)據(jù)源僅提供相當于表的對象,它由指定工作簿中的工作表和定義的命名區(qū)域組成。命名區(qū)域被視為“表”,而工作表被視為“系統(tǒng)表”)這里我們將Excel也當作一個“數(shù)據(jù)庫”來對待,然后利用OleDbConnection.GetOleDbSchemaTable 方法。注意:對于那些不熟悉 OLE DB 架構行集的人而言,它們基本上是由 ANSI SQL-92 定義的數(shù)據(jù)庫構造的標準化架構。每個架構行集具有為指定構造提供定義元數(shù)據(jù)的一組列(稱作 .NET 文檔中的“限制列”)。這樣,如果請求架構信息(例如,列的架構信息或排序規(guī)則的架構信息),則您會明確知道可以得到哪種類型的數(shù)據(jù)。
以下是讀取ADO.NET Excel數(shù)據(jù)文件內(nèi)“表”定義元數(shù)據(jù),并顯示出來的的程序片斷:
// 讀取Excel數(shù)據(jù),填充DataSet
// 連接字符串
string xlsPath = Server.MapPath("~/app_data/somefile.xls");
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Extended Properties=\"Excel 8.0;HDR=No;IMEX=1\";" +
// 指定擴展屬性為 Microsoft Excel 8.0 (97) 9.0 (2000) 10.0 (2002),并且***行作為數(shù)據(jù)返回,且以文本方式讀取"data source=" + xlsPath;
string sql_F = "SELECT * FROM [{0}]";
OleDbConnection conn = null;
OleDbDataAdapter da = null;
DataTable tblSchema = null;
IList<string> tblNames = null;
// 初始化連接,并打開
conn = new OleDbConnection(connStr);
conn.Open();
// 獲取數(shù)據(jù)源的表定義元數(shù)據(jù)
//tblSchema = conn.GetSchema("Tables");
tblSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
GridView1.DataSource = tblSchema;
GridView1.DataBind();
// 關閉連接
conn.Close();
以上是“如何讀取ADO.NET Excel數(shù)據(jù)文件”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關知識,歡迎關注億速云行業(yè)資訊頻道!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。