c# 獲取Excel內容的分析

 如今主流的Excel文檔有2003和2007html

c#獲取 Excel2003 鏈接字符串  c#

string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" +
filepath + ";" + "Extended Properties=Excel 8.0;";  //filepath爲Excel文件的路徑數組

Excel2003 鏈接方式只能夠操做Excel2003的文檔服務器

c# 獲取Excel2007 鏈接字符串 架構

string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + filepath + ";Extended Properties='Excel 12.0; HDR=YES; IMEX=1'"; ide

Excel2007 鏈接方式能夠操做Excel200七、Excel2003的文檔ui

使用Excel2007 鏈接有時候須要先從微軟的官網下載Excel2007的驅動,下載地址以下:spa

http://www.microsoft.com/zh-cn/download/details.aspx?id=13255excel

鏈接字符解析code

 HDR

   NO 無字段,即從Excel取得的表格中不包含列標題

          若是您在鏈接字符串中指定 HDR=NO,Jet OLE DB 提供程序將自動爲您命名字段(F1 表示第一個字段,F2 表示第二個字段,依此類推);

   yes  有字段,默認excel表中第1行爲列標題

 IMEX=1  通知驅動程序以文本格式讀取混合型的列(如數字、日期、字符串等)。須要注意的是,這個選項可能會致使Excel文件的寫入拒絕

    IMEX有三個可選的值:0,1和2,默認是0; 微軟是這樣解釋的:
        0 is Export mode    -------導出模式(從Excel文件讀取數據時使用)
        1 is Import mode     -------導入模式(向Excel文件插入數據時使用)
        2 is Linked mode (full update capabilities)  -----
Linked模式(須要徹底更新Excel文件時使用)

 Excel8.0指Excel的驅動版本,從Excel97到2003都用這個,Excel2007中開始用Excel12.0

   public static System.Data.DataSet ExcelSql(string filepath, string tablename)
        {
            string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" +
    filepath + ";" + "Extended Properties=Excel 8.0;";
            OleDbConnection conn = new OleDbConnection(strConn);

            conn.Open();

            //返回Excel的架構,包括各個sheet表的名稱,類型,建立時間和修改時間等    
            DataTable dtSheetName = conn.GetOleDbSchemaTable(
            OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" });

            //包含excel中表名的字符串數組  
            string[] strTableNames = new string[dtSheetName.Rows.Count];
            for (int k = 0; k < dtSheetName.Rows.Count; k++)
            {
                strTableNames[k] = dtSheetName.Rows[k]["TABLE_NAME"].ToString();
            }
          
            DataTable dt = new DataTable();
            DataSet ds = new DataSet();
            //從指定的代表查詢數據,可先把全部代表列出來供用戶選擇  
            OleDbDataAdapter odda = new OleDbDataAdapter("select * from [" + strTableNames[0].ToString() + "]", conn); //("select * from [Sheet1$]", conn);
            odda.Fill(ds, "[" + tablename + "$]");
            conn.Close();
            return ds;
            
        }
c# 獲取Excel2003內容
   /// <summary>
        /// 鏈接Excel  讀取Excel數據   並返回DataSet數據集合
        /// </summary>
        /// <param name="filepath">Excel服務器路徑</param>
        /// <param name="tableName">Excel表名稱</param>
        /// <returns></returns>
        public static System.Data.DataSet ExcelSqlConnection(string filepath, string tableName)
        {
            string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + filepath + ";Extended Properties='Excel 12.0; HDR=YES; IMEX=1'"; //此連接能夠操做.xls與.xlsx文件
            OleDbConnection conn = new OleDbConnection(strConn);
            conn.Open();
            DataSet ds = new DataSet();
            //返回Excel的架構,包括各個sheet表的名稱,類型,建立時間和修改時間等    
            DataTable dtSheetName = conn.GetOleDbSchemaTable(
            OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" });

            //包含excel中表名的字符串數組  
            string[] strTableNames = new string[dtSheetName.Rows.Count];
            for (int k = 0; k < dtSheetName.Rows.Count; k++)
            {
                strTableNames[k] = dtSheetName.Rows[k]["TABLE_NAME"].ToString();
            }  
            OleDbDataAdapter odda = new OleDbDataAdapter("select * from ["+strTableNames[0].ToString()+"]", conn); //("select * from [Sheet1$]", conn);
            odda.Fill(ds, "[" + tableName + "$]");
            conn.Close();
            return ds;
        }
c# 獲取Excel2007內容

c#操做Excel:

http://www.cnblogs.com/SunYu/archive/2010/04/27/1722471.html

相關文章
相關標籤/搜索