• 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];
    

     问题解决了

    本人的博客不再维护从2013年就不再维护了 需要我帮助的朋友请到我的个人论坛 http://www.sufeinet.com 进行讨论,感谢大家对我的支持!
  • 相关阅读:
    《Java架构师的第一性原理》24Java基础之并发第5篇Java并发编程的艺术
    《Java架构师的第一性原理》71场景题之搜索引擎ElasticSearch
    70道HR常问面试题,找工作避坑必看
    《Java架构师的第一性原理》10计算机基础之计算机组成原理
    《Java架构师的第一性原理》00计算机的第一性原理
    photoshop--历史记录画笔工具-- 所画之处恢复原图像
    photoshop--去色--彩色图像变成灰度图像
    photoshop--历史记录
    qt5-循环遍历语句foreach
    qt5串口通信
  • 原文地址:https://www.cnblogs.com/sufei/p/2470262.html
Copyright © 2020-2023  润新知