zoukankan      html  css  js  c++  java
  • 读取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 + "$]";。

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

  • 相关阅读:
    回溯法之图的着色问题
    回溯法基本思想
    L2-006 树的遍历
    P1540 机器翻译
    P1067 多项式输出
    C++STL之map映照容器
    C++STL之multiset多重集合容器
    C++STL之set集合容器
    C++之string基本字符系列容器
    C++STL之vector向量容器
  • 原文地址:https://www.cnblogs.com/zhaox583132460/p/3411775.html
Copyright © 2011-2022 走看看