C#导入Excel|读取Excel方法总结

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

 问题解决了

转载于:https://www.cnblogs.com/ado-geek/archive/2012/05/14/2499429.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值