• c# 获取Excel内容的分析


     现在主流的Excel文档有2003和2007

    c#获取 Excel2003 连接字符串  

    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'"; 

    Excel2007 连接方式可以操作Excel2007、Excel2003的文档

    使用Excel2007 连接有时候需要先从微软的官网下载Excel2007的驱动,下载地址如下:

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

    连接字符解析

     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

  • 相关阅读:
    (5.1.4)引擎管理——SSMS管理使用小技巧
    (5.1.3)引擎管理——恢复系统数据库
    Kafka 基本原理
    读懂基础机器学习算法
    数据挖掘常用工具
    Oracle 增加修改删除字段
    .net中使用ODP.net访问Oracle数据库(无客户端部署方法)
    数据挖掘系列(1)关联规则挖掘基本概念与Aprior算法
    ORACLE存储过程学习
    js版扫雷(可直接运行试玩)
  • 原文地址:https://www.cnblogs.com/eye-like/p/3180688.html
Copyright © 2020-2023  润新知