当用OLEDB读取Excel的时候,解决同一列中“字符串”和“数字”两种格式同时存在,读取时不能正确显示“字符串”格式的问题:

            DataSet dataSet = new DataSet();OleDbConnection oleDbConnection = null;try{oleDbConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=\"Excel 8.0;IMEX=1;\"");//Microsoft.Jet.OLEDB.4.0OleDbCommand selectCommand = new OleDbCommand();selectCommand.Connection = oleDbConnection;selectCommand.CommandText = "select * from [" + sheetName + "]";selectCommand.CommandType = CommandType.Text;OleDbDataAdapter adapter = new OleDbDataAdapter(selectCommand);dataSet = new DataSet();adapter.Fill(dataSet);}catch (Exception exception){oleDbConnection.Close();}finally{oleDbConnection.Close();}

当我们设置IMEX=1时将强制混合数据转换 为文本,但仅仅这种设置并不可靠,IMEX=1只确保在某列前8行数据至少有一个是文本项的时候才起作用,它只是把查找前8行数据中数据类型占优选择的行 为作了略微的改变。例如某列前8行数据全为纯数字,那么它仍然以数字类型作为该列的数据类型,随后行里的含有文本的数据仍然变空。

另一个改进的措施是IMEX=1与注册表 值TypeGuessRows配合使用,TypeGuessRows 值决定了ISAM 驱动程序从前几条数据采样确定数据类型,默认为“8”。可以通过 修改“HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Excel”下的该注册表值来更 改采样行数。如果设置为0,将分析所有数据行。

注意:Excel表数据列是单一列数据类型还是混合列数据类型列,是由取样行决定 而不是整列数据觉定。

转载于:https://www.cnblogs.com/JYuAn/p/9243204.html

Microsoft.ACE.OLEDB.12.0 读取混合列相关推荐

  1. Microsoft.Jet.OLEDB.4.0和Microsoft.ACE.OLEDB.12.0的区别

    Jet 引擎,可以访问 Office 97-2003,但不能访问 Office 2007. ACE 引擎是随 Office 2007 一起发布的数据库连接组件,既可以访问 Office 2007,也可 ...

  2. Microsoft.Ace.OleDb.12.0 操作excel

    在用c#操作excel的时候,碰到了一下的问题: 1.Microsoft.Ace.OleDb.12.0未安装,可以到下载2007 Office system 驱动程序AccessDatabaseEng ...

  3. System.InvalidOperationException:“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序

    [写在前面] 今天在做c#和ACCESS的连接测试时出现了如下图的BUG: (本人VS为2017,access为2016 64位专业版) CODES: 报错提示 error location [原因分 ...

  4. 导入 Excel 未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序解决办法

    错误提示:未在本地计算机上注册"Microsoft.ACE.OLEDB.12.0"提供程序. (System.Data) 解决办法: 去http://download.micros ...

  5. 从Excel中导入数据时,提示“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序”的解决办法...

    注意,64位系统,用64位的补丁文件; https://www.cnblogs.com/A2008A/articles/2438962.html 操作系统:使用的是64位的Windows Server ...

  6. 未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序

    为什么80%的码农都做不了架构师?>>>    错误信息:未在本地计算机上注册"microsoft.ACE.oledb.12.0"提供程序. 解决办法: 立即下载 ...

  7. “microsoft ace oledb 12.0 未注册”疑云

    1. 有人说: 2015也是要安装32位的AccessDataengine,anycpu选32位优先才行,不然就是Microsoft.ACE.OLEDB.12.0未注册. hanstom,一个老调重弹 ...

  8. 未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0

    从Excel中导入数据时,提示"未在本地计算机上注册"Microsoft.ACE.OLEDB.12.0"提供程序"的解决办法 操作系统:使用的是64位的Wind ...

  9. 错误:未在本地计算机上注册“Microsoft.Ace.OleDb.12.0”提供程序

    前言 在win10上安装某然间,出现错误提示:未在本地计算机上注册"Microsoft.Ace.OleDb.12.0"提供程序. 未在本地计算机上注册"Microsoft ...

  10. 关于异常“The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine”的处理...

    我们在利用SqlBlukcopy技术倒2010 或者2007格式的文件到SqlServer 数据库的时候,会发生如下错误: 原因如下: 1.在用SQL SERVER 2005访问.xlsx文件(off ...

最新文章

  1. 深度召回模型在QQ看点推荐中的应用实践
  2. 在NetBeans,Eclipse,IntelliJ,OpenShift和Maven上使用WildFly 9
  3. MySQl的一些基本知识(1)
  4. 【算法】剑指 Offer 18. 删除链表的节点
  5. 为什么黑客都用python-黑客编程为什么首选Python语言?这里告诉你答案!
  6. 常用头文件的可调用函数的归类笔记
  7. 【虚拟机】关于 virtualbox 和 vmware workstation 对比的个人见解
  8. 接口测试之Postman使用全图文指南(原来使用Postman测试API接口如此简单)
  9. server-sent events
  10. 物联网人工智能软件市场现状研究分析报告 -
  11. 滴滴打车CTO张博:生死战役,技术和时间赛跑
  12. 小师妹教我如何轻松拿下BAT、网易、蘑菇街的offer
  13. linux格式化光盘找不到介质,Linux挂载光盘的问题解决方案(mount: you must specify the filesystemnbs...
  14. UG NX 12抽取体特征
  15. 全国考研计算机成绩排名,计算机考研模拟考试全国排行
  16. 手机应用推广必备发布渠道【安卓渠道汇】
  17. 微信小程序富文本长按复制粘贴
  18. 和平精英当前您所在的服务器更新维护,光子再次更新体验服招募时间 3月新版本疑似再度延迟...
  19. BugkuCTF——WEB(1)
  20. 杭州社保转移及公积金领取

热门文章

  1. 帆软分组合并字符串、提取字符串中的数字、判断多项字符串至少一项被包含
  2. php ftp_ascii,php ftp函数
  3. python curl 获取返回值_php curl_exec()函数 CURL获取返回值的方法
  4. sql中exists,not exists的用法 1
  5. ExtJS Grid中文字链接点击事件的更合理的处理办法
  6. sysstat工具包提供的主要命令
  7. 【5月8 】NVIDIA 迁移学习工具包(TLT)最佳实践
  8. 2月12 CNN结构特征+Faster R-CNN
  9. Java多线程实现-线程池
  10. 简易CPU的C++实现