使用oledb獲取Excel文件第一個工作表數據

使用Microsoft.Jet.OLEDB讀取Excel文件時需要在sql中指定表名,形如[Sheet1$],也就是xls文件中的工作表。對於導入Excel文件這類操作,因爲用戶提供的xls文件中工作簿的名字不一定是默認的“Sheet1”,檢Excel文件的工作表的名稱往往需要調用Excelcom對象來獲得,比較麻煩。

另外有個辦法可以獲得工作表名稱,以下是c#代碼:

    public static string GetFirstTableName()
        {

        DataTable dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
        string tableName = dt.Rows[0][“TABLE_NAME”].ToString().Trim();
        return tableName;
        }

     但是上面的方法獲取的表名,其實是經過排序的,並且是按照工作表的名字的ACSII碼的大小排序。 取第一行的工作表並不一定是默認的一張表,

其實可以用下面的辦法繞過這個必須顯式指定工作表的問題,在OleDb調用的獲取數據的SQL這樣指定表名:

    SELECT * FROM [$A1:Z65536]

    此處[$A1:Z65536] 替換通常的[Sheet1$],其含義就是獲取xls文件中在第一個位置的工作表中A列到Z列的1-65536行這塊數據。這樣就可以避免獲取第一個工作表的問題,根據要導入的xls文件內容可以修改開始列字母1:結束列字母65536 中的字母爲實際需要的值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章