Excel导入,数字+文本,文本无法识别的解决方案
很多人都知道这个解决方案,不过本人比较菜,找了很久才知道,发现网上的解决方案都是都要结合起来才能,就整理了一下,大大路过,不要喷我,这是俺整理的,加上自己的实践
在导入Excel时,会有一个非常有趣的现象,就是数字的识别问题,当Excel中的某一列同时存在纯文本列与纯数字列时,非常有可能出现文本能导入而数字无法导入或者数字能导入而文本无法导入,本人经过多次试验发现,主要在于Excel驱动的问题。
常规情况下,我们以如下方式操作Excel:
string conn = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" + filename + ";Extended Properties=Excel 8.0";
OleDbConnection thisconnection = new OleDbConnection(conn);
thisconnection.Open();
这种情况下,极易出现数字或文本无法识别的问题,主要是当Excel第一行为数字或文本时,系统会默认以下所有行都是同一种数据形式,而出现非该类数据时,无法进行强行转换最终导致数据丢失,要解决此问题,只需要连接字符串上,稍微进行改动即可:
string conn = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" + filename + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
OleDbConnection thisconnection = new OleDbConnection(conn);
thisconnection.Open();
其中:
HDR=Yes,这代表第一行是标题,不做为数据使用 ,如果用HDR=NO,则表示第一行不是标题,做为数据来使用。系统默认的是YES
参数Excel 8.0
对于Excel 97以上版本都用Excel 8.0
IMEX ( IMport EXport mode )设置
IMEX 有三种模式:
0 is Export mode
1 is Import mode
2 is Linked mode (full update capabilities)
我这里特别要说明的就是 IMEX 参数了,因为不同的模式代表著不同的读写行为:
当 IMEX=0 时为“汇出模式”,这个模式开启的 Excel 档案只能用来做“写入”用途。
当 IMEX=1 时为“汇入模式”,这个模式开启的 Excel 档案只能用来做“读取”用途。
当 IMEX=2 时为“连結模式”,这个模式开启的 Excel 档案可同时支援“读取”与“写入”用途。
意义如下:
0 ---输出模式;
1---输入模式;
2----链接模式(完全更新能力)
string connstr = "Provider=Microsoft.ACE.OLEDB.12.0; Persist Security Info=False;Data Source=" + @Excfilename + "; Extended Properties=Excel 8.0;HDR=Yes;IMEX=2";
在这种情况下,有可能出现“找不到可安装的ISAM ”。
而这个问题的出现,绝大部分原因是因为我们的语句中少了点要素。
string connstr = "Provider=Microsoft.ACE.OLEDB.12.0; Persist Security Info=False;Data Source=" + @Excfilename + "; Extended Properties='Excel 8.0;HDR=Yes;IMEX=2'";
string connstr = "Provider=Microsoft.ACE.OLEDB.12.0; Persist Security Info=False;Data Source=" + @Excfilename + "; Extended Properties=/"Excel 8.0;HDR=Yes;IMEX=2/"";
改成上述两种情况都是可以解决的。
本以为这样就OK了。但在实际使用过程中,这样设置还是不行,查阅了不少资料才发现,注册表里面有一个TypeGuessRows值,预设是8,表示会先读取前8列来决定每一个栏位的型态,所以如果前8列的资料都是数字,到了第9列以后出现的文字资料都会变成null,所以如果要解决这个问题,只要把TypeGuessRows机码值改成0,就可以解这
xp:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel
Windows 7等 64 系统:
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Excel]
设置 TypeGuessRows 为 0 将会导致性能的下降。IMEX=1 数据内容也能出现不正常的现象,比如长数字可能会出现科学计数法的格式显示。比较好的做法是导出前,对所有单元格进行处理,在单元格内容前面加 '。
Excel导入,数字+文本,文本无法识别的解决方案相关推荐
- 前端利用JS导出数据到Excel表 数字是文本类型 无法计算
问题描述:前端利用JS导出数据到Excel表 数字是文本类型 无法进行公式计算:前端利用JS导出数据到Excel表 数字是文本类型 无法计算 解决办法:参考https://bbs.csdn.net/t ...
- Excel DAY 01 保护工作簿结构工作表 保护工作表填充柄文本记忆输入数据有效性验证导入外部数据文本 数值 日期选中多个数据冻结行头
Excel DAY 01 重点知识点 保护工作簿结构&工作表 保护工作表&填充柄&文本记忆输入&数据有效性验证&导入外部数据&文本 数值 日期& ...
- oracle取括号内数字,怎么把excel中一列文本中括号里的数字弄出来啊
公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:怎么把excel中一列文本中括号里的数字弄出来啊回答:=MID(A1,FIND("(",A1)+1,FIND(")",A1)-FIN ...
- excel 科学计数法转换成文本完整显示_避免万次暴击,巧办法解决数字和文本之间的快速转化...
很多朋友在在数据整理的过程中都遇到过下图这种情况,大量数字内容,因为数字内容较长,excel以科学计数法进行了显示,多数时候我们会选中列设置单元格格式为文本,但单元格内容并不会转化为文本,需要对每个单 ...
- Excel常用技巧—数字和文本转换,三种方法任你选!!
Excel图表系列: Excel数据分析常用函数①--查询函数 Excel数据分析常用函数②--统计函数 Excel数据分析常用函数③--字符串函数 Excel数据分析常用函数④--日期函数 Exce ...
- Navicat怎样导入Excel表格和txt文本的数据
Navicat怎样导入Excel表格数据 1. 准备excel数据表,第一行是字段名,第二到五行是数据 (1.当需要存储的字段为null时,对应的单元格不写 2.注意数据是在哪个工作表中,例如:下面 ...
- Excel中数字、数值和文本的区别
数字包括文本型数字和数值型数字两种形式,数值型数字可以计算,文本型数字不能计算. 例1:文本型数字不能计算 例2:数值型数字可以计算 数值型数字如果输入大于11位数,则会显示为科学计数法.如果输入00 ...
- 导出excel此单元格中的数字为文本格式,或者其前面有撇号
前言: 无论大家使用的是java,js,.net等技术导出excel,都会出现下面的问题. 这篇文章只提供解决思路,以及用easyexcel导出 的处理方式,其他技术大家可以举一反三. 1.导出exc ...
- 使用计算机制作数字文本格式,电脑excel表格如何将文本格式变成数字格式
电脑excel表格如何将文本格式变成数字格式 文本格式和数字格式的单元格显示是有部分不一样的,今天小编就告诉大家电脑excel表格如何将文本格式变成数字格式. 具体如下: 1.首先我们打开电脑中的Ex ...
最新文章
- 高达82 fps的实时文本检测,可微分二值化模块
- 【Network Security!】密码攻击的原理和方法
- 在大数据时代,每家公司都要有大数据部门吗?
- beacon帧字段结构最全总结(三)——VHT字段总结
- 余弦相似度/卷积核之间的成对余弦相似性
- 问题 L: The Hanoi Tower
- debian dhcp服务启动不了_网刻批量装系统pxe启动教程全自动分区装系统
- Linux性能监控(转)
- 在Android开发中如何移除EditText上的输入焦点
- D3D12渲染技术概述
- 软件项目总结报告范文
- 成功烧写TMS320F2812经验
- 3.7V转3V超低功耗稳压芯片
- 网易云课堂 python网络爬虫实战
- PCL 自定义点云类型PointT
- vue预览excel
- Android8.0 蓝牙系统
- 思科2018校招硬件测试笔试试题及答案
- Java基础语法总结(一)——类与对象
- windows10计算机无法启动不了,windows10不能开机怎么办
热门文章
- es like and or_金咕咕直播复盘ES和IG那波,听着真过瘾,职业不愧是职业,太细了...
- 红米笔记本linux,Redmi首款AMD笔记本将加入全新小米互传
- Python程序员面试中,被常问的七道题!(详细解题思路)
- 用Rayleigh-Ritz法求解梁的固有频率并用有限元校核
- java的endorsed机制,java.endorsed.dirs 和 java.ext.dirs 系统属性说明 | 学步园
- CVPR2018 | 摆好Pose却没管理好面部表情?腾讯优图Facelet-Bank人脸处理技术了解一下...
- MySQL的order by该如何避免“未命中索引“
- Linux系统时间同步方法
- 华为系列故事-迈向新赛道摘抄
- 微信冷知识|那些朋友圈文字被折叠的原因所在