读取Excel异常定义了过多字段的解决方法

  /// <summary>  
       /// 从Excel文件导入数据  
     /// </summary>  
       /// <param name="ExcelStr">文件的全路径</param>  
       /// <param name="SheetName">Excel文档里的表名称</param>  
       public static DataSet Class_ExcelSql(string ExcelStr, string SheetName)  
       {  
           OleDbConnection MyConn_E = new OleDbConnection();  
           OleDbCommand MyComm_E = new OleDbCommand();  
           OleDbDataAdapter MyAdap = new OleDbDataAdapter();  
           DataSet MyTable = new DataSet();  
           if (!File.Exists(ExcelStr))  
           {  
               DevExpress.XtraEditors.XtraMessageBox.Show("所选文件不存在!", "提示");  
               return null;  
           }  
           string Conn_Str = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ExcelStr + ";Extended Properties='Excel 8.0;HDR=Yes;'";  
           try  
           {  
               MyConn_E.ConnectionString = Conn_Str;  
               MyConn_E.Open();  
               MyComm_E.Connection = MyConn_E;  
               MyComm_E.CommandText = "select * from [" + SheetName + "$]";  
               MyAdap.SelectCommand = MyComm_E;  
               MyAdap.Fill(MyTable);  
           }  
           catch (OleDbException Err_My)  
           {  
               DevExpress.XtraEditors.XtraMessageBox.Show(Err_My.Message, "提示");  
           }  
           if (MyConn_E.State == ConnectionState.Open)  
           {  
               MyConn_E.Close();  
               MyConn_E.Dispose();  
           }  
           MyComm_E.Dispose();  
           MyAdap.Dispose();  
           return MyTable;  
       }  

其中MyComm_E.CommandText = "select * from [" + SheetName + "$]";抛出异常“"定义了过多字段"”

此问题可以有三种解决办法

办法一:隐藏Excel多余的列开始-格式-隐藏和取消隐藏-选择隐藏列

办法二:把查询语句改为指定开始到结束列

如:"select * from [" + SheetName + "$A:IU]";其中A:IU代表查询第A列到第IU列。

办法三:查询指定列

如:"select 第一列,第二列 from [" + SheetName + "$]";。

以上三种方法都可以解决“定义了过多字段”

转载于:https://www.cnblogs.com/zhaox583132460/p/3411775.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值