zoukankan      html  css  js  c++  java
  • C# EXCEL导入 混合列文字为空,找不到可安装的 ISAM的解决办法

    C# EXCEL导入 混合列文字为空,找不到可安装的 ISAM的解决办法 
    使用C#导入 Excel数据到 DataTable,如果连接串中只写 Excel 8.0,则正常的字符列,数值列都没有问题,但对于既有数字也有字符的混合列,则读出为空。 
      后来从网上查到加入IMEX=1 就可将混合型转换为文本,就是连接串为Excel 8.0;IMEX=1,但这有出现 “找不到可安装的 ISAM”。 
      后来在其两边加上单引号' 就可解决。也就是 'Excel 8.0;IMEX=1' 
      EXCEL 默认若前8行都没有出现文本,那么就认为这一列的所有值都是数字,可以在注册表下面语句处修改为默认值,比如500,但尽量将字符行向前。 
      HKEY_LOCAL_MACHINESOFTWAREMicrosoftJet4.0EnginesExcel 
    最后完整的函数如下: 
    public static System.Data.DataTable CallExcel(string FilePath, string sheetName) 

    OleDbConnection con = new OleDbConnection('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + FilePath + ';Extended Properties='Excel 8.0;HDR=YES;IMEX=1''); 
    con.Open(); 
    string sql = 'select * from [' + sheetName + '$]';//[Sheet1$]';////选择第一个数据SHEET 
    //OleDbCommand command = new OleDbCommand(sql, con); 
    //OleDbDataReader reader = command.ExecuteReader(); 
    //if (reader.Read()) 
    //{ 
    // reader[0].ToString();//直接读出数据 
    //} 
    OleDbDataAdapter adapter = new OleDbDataAdapter(sql, con); 
    System.Data.DataTable dt = new System.Data.DataTable(); 
    adapter.Fill(dt); 
    //reader.Close(); 
    //command.Dispose(); 
    con.Close(); 
    con.Dispose(); 
    return dt; 
    }

  • 相关阅读:
    医院科室管理系统日志实现
    遍历hashmap
    java用于控制可见性的4个访问修饰符
    java中error和exception
    线程的状态
    线程间的通信
    位运算(1的个数;2.判断奇偶)
    24点组合
    Sequential 类的设备迁移
    gluon多线程迭代器
  • 原文地址:https://www.cnblogs.com/IcefishBingqing/p/3721450.html
Copyright © 2011-2022 走看看