• 读取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 + "$]";。

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

  • 相关阅读:
    环境装好,开始学习
    懒惰了
    我的net试验田
    时间不够用
    【转帖】关于委托的精彩解说(非常形象)
    【转帖】 CLR 全面透彻解析:托管和本机代码互操作性
    【转贴】C#中的API32
    【转帖】Windows Mobile 开发系列文章收藏 Windows Mobile 6.x
    弹跳圣经——扣篮梦
    【转帖】.Net中C#的DllImport的用法
  • 原文地址:https://www.cnblogs.com/zhaox583132460/p/3411775.html
Copyright © 2020-2023  润新知