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

相关文章
相关标签/搜索