C#導入Excel|讀取Excel方法總結


原文:http://www.sufeinet.com/thread-2029-1-1.html

1.  StreamReader 方法

這種方法一般不用,因為他讀出來的是流,一般是轉成字符串

代碼如下:

  StreamReader sr = new StreamReader("文件名以及完整路徑",System.Text.Encoding.Default);
            string data = sr.ReadToEnd();
            sr.Close();

2.OleDbConnection讀取

最常 用的看下代碼吧

 

  /**/
        /// <summary>
        /// 返回Excel數據源
        /// </summary>
        /// <param name="filename">文件路徑</param>
        /// <param name="TSql">TSql</param>
        /// <returns>DataSet</returns>
        public static DataSet ExcelToDataSet(string filename, string TSql)
        {
            DataSet ds;
            string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;data source=" + filename;
            OleDbConnection myConn = new OleDbConnection(strCon);
            string strCom = TSql;
            myConn.Open();
            OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn);
            ds = new DataSet();
            myCommand.Fill(ds);
            myConn.Close();
            return ds;
        }

 

         使用方法如下,只要寫Sql語句就行了

//設置T_Sql
        string TSql = "SELECT  * FROM [sheel1$]";
        //讀取數據
        DataTable table = ExcelToDataSet(fullPath, TSql).Tables[0];

 在這種情況下大家一般都會碰到這樣的問題

如果是動態導入很多Excel表格的時候,他們的表名可能不一樣,總不能每次都輸入一次表名吧,其它不需要的

只要用下面的方法就可以得到表名

請看代碼

 /// <summary>
        /// 動態取Excel表名
        /// </summary>
        /// <param name="fullPath">文件路徑</param>
        /// <returns></returns>
        public static string GetExcelFirstTableName(string fullPath)
        {
            string tableName = null;
            if (File.Exists(fullPath))
            {
                using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet." +
                "OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" + fullPath))
                {
                    conn.Open();
                    tableName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null).Rows[0][2].ToString().Trim();
                }
            }

            return tableName;
        }

 

 修改上面的代碼如下所示

 string tableName = GetExcelFirstTableName("文件 路徑");
        //設置T_Sql
        string TSql = "SELECT  * FROM [" + tableName + "]";
        //讀取數據
        DataTable table = ExcelToDataSet(fullPath, TSql).Tables[0];

 問題解決了

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM