通过oledb驱动读取excel、csv数据丢失解决方案
1、问题出现
在开发应用程序的过程中,比较常用一功能就是通过oledb驱动读取excel、csv、text等文件;而最近有客户反映,在使用短信平台(下载地址:http://www.sms1086.com/product/detail-150.html),发现出现以下问题:

还有一种情况,excel只能导入部分,而其他的导入不进去。
而其他excel或text文件,不会出现此类问题。但是将有问题的excel粘贴到新建的文件中,还会出现类似问题。
2、网上解答
在博客园http://www.cnblogs.com/clare-zhang/archive/2012/05/30/2525884.html给出了解决方案:
查询注册表,将TypeGuessRows=8 修改为 TypeGuessRows=0
下图是Win10 64位企业版的修改位置,操作系统不通,修改地方不通;建议查询注册表,修改所有TypeGuessRows为0

按照此方法,可解决Excel数据丢失问题。棒棒的~~~~~~~~
3、读取Text文件数据丢失
Excel文件问题解决了,但是在读取csv、text文件,仍然出现数据丢失的问题,是什么原因引起的呢?与excel对比,不难发现,还是注册表配置的问题。
通过查询注册表,找到Text的驱动:

修改MaxScanRows=0即可解决问题。
4、TypeGuessRows详解
要使用 Jet OLE DB 提供程序访问 Excel 工作簿,请使用具有下列语法的连接字符串:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\sms.xls;Extended Properties="Excel 8.0;HDR=YES;"
在连接字符串中,用 Data Source 参数指定工作簿的完整路径和文件名。Extended Properties 参数可包含两种属性:一个属性用于 ISAM 版本,一个属性用于指示表是否包括标题。
使用 Excel 工作簿时,默认情况下,区域中的第一行是标题行(或字段名称)。如果第一个区域不包含标题,您可以在连接字符串的扩展属性中指定 HDR=NO。如果您在连接字符串中指定 HDR=NO,Jet OLE DB 提供程序将自动为您命名字段(F1 表示第一个字段,F2 表示第二个字段,依此类推)。
与传统的数据库不同,在 Excel 表中没有指定列的数据类型的直接方式。而是,OLE DB 提供程序通过对一列中的八行进行扫描来猜测 该字段的数据类型。您可以通过为连接字符串的扩展属性中的 MAXSCANROWS 设置指定一个一 (1) 至十六 (16) 之间的值,来更改要扫描的行数。
而注册表中TypeGuessRows=8,默认从前8行进行扫描来猜测该字段的数据类型,设置TypeGuessRows=0表示不猜测数据类型。
5、MaxScanRows详解
与Excel注册表参数雷同,MaxScanRows=19(16进制)表示从前25行进行扫描猜测该字段的数据类型。
在不修改注册表的情况下,可通过以下连接字符串实现(VB代码):
strConn = ""
strConn = strConn & "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFolder & ";"
strConn = strConn & "Extended Properties="
strConn = strConn & Chr(34)
strConn = strConn & "text;CharacterSet=UNICODE;HDR=Yes;FMT=Delimited;IMEX=1;MaxScanRows=0;"
strConn = strConn & Chr(34) Set cn = New ADODB.Connection
With cn
.Provider = "Microsoft.Jet.OLEDB.4.0" ' this line is redundant, but it helps you read the code
.ConnectionString = strConn
.Properties("Jet OLEDB:Registry Path") = "SOFTWARE\TacticalApps\MyApp\1.0"
.Mode = adModeRead
.Open
End With
腾信集团(www.sms1086.com)欢迎您的光临~~~
通过oledb驱动读取excel、csv数据丢失解决方案的更多相关文章
- 基于.NET的程序读取Excel文件的解决方案
目录 0. 前言 1. 使用NPOI库读取Excel文件 2. 使用OleDbConnection 3. 相关参考 shanzm-2020年12月8日 23:48:11 0. 前言 以前基于 .NET ...
- 数据处理之以OLEDB方式读取Excel数据丢失的原因及解决方法
1.引言 在应用程序的设计中,经常需要读取Excel数据或将Excel数据导入转换到其他数据载体中,C#读取Excel的方式有两种,一种是通过OLEDB方式读取,另一种为通过COM组件方式读取.近段时 ...
- 使用OLEDB方式 读取excel和csv文件
/// <summary> /// 使用OLEDB读取excel和csv文件 /// </summary> /// <param name="path" ...
- oledb方式读取excel文件
进入博客园后台发现12年11月份写的草稿没发,时隔1年,把它拉出来晒晒太阳. 前言 第一次做Excel文件导入,采用了oledb,不足之处,还请各位大牛指出,谨以此文对导入Excel做个总结. 一般步 ...
- C# oleDb方法读取Excel文件
今天学习的是从FTP上下载Excel文件,DataTable接收数据之后,在DataTable中通过筛选,删减修改之后把数据插入到DB相应表中. 优点:读取方式简单.读取速度快 缺点:除了读取过程不太 ...
- C#使用OLEDB方式读取EXCEL,表的结构
var tables = con.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { }); Ta ...
- truncate at 255 characters with xlsx files(OLEDB方式读取Excel丢失数据、字符串截断的原因和解决方法)
The TypeGuessRows setting is supported by ACE. Note the version numbers in the key may change depend ...
- 用OLEDB读取EXCEL时,单元格内容长度超过255被截断
https://support.microsoft.com/zh-cn/help/189897/data-truncated-to-255-characters-with-excel-odbc-dri ...
- 使用OLEDB读取excel和csv文件
这是我第一次在博客上写东西,简单的为大家分享一个oledb读取文件的功能吧,这两天在做一个文件导入数据库的小demo,就想着导入前先在页面上展示一下,之前调用Microsoft.Office.Inte ...
随机推荐
- 使用Tomcat搭建图片服务器,使图片能够用链接访问
在后台和前端交互时,遇到了后台存储的图片,前端根据地址无法访问,使用Tomcat搭建图片服务器 1.找到tomcat下的server.xml文件 2.配置文件下加入service节点 <!--为 ...
- Codeforces Round 212 Div 2 报告(以前没写完,现在也没心情补了,先就这样吧)
A. Two Semiknights Meet 题目大意:有一个8x8的棋盘,上面放有两个骑士,骑士以“田字”的方式走.每个方格都被定义为good或者bad,问骑士能否在good的格子中相遇? 由于骑 ...
- WCF必须使用证书验证吗
你说的 ASP.NET Web Service在消息头里加个字段,服务端做验证,这个是可以的,但是无法保证传输的用户名和密码是加密安全的. 要求使用证书,也是强制服务器端,这里涉及到服务器身份鉴别的问 ...
- onethink的熟悉
2014.07.14 下载后,并安装成功! 发现一个安装的问题.安装时,无法直接成功. 修改Url 直接跳到最后一步,实现了安装.去官网查询,发现是程序的问题. 尝试构建企业官网. 首先 实现一个企业 ...
- xlrd(开excel表格)
打来表格 wb = xlrd.open_workbook('example.xlsx') 选择sheet sh=wb.sheet_by_index(序号) 表格的行数 sh.nrows 选取第m行第n ...
- 常用SQL DDL语句
常用SQL DDL语句 DDL-数据库定义语言:直接提交的.CREATE:用于创建数据库对象.DECLARE:除了是创建只在过程中使用的临时表外,DECLARE语句和CREATE语句非常相似.唯一可以 ...
- Java线程:总结
线程的状态转换图: new:新建状态 Runnable:就绪状态.线程对象创建后,其他线程调用了该对象的start()方法.该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权. Run ...
- Pomelo的Protobuf
pomelo的protobuf实现,借助了javascript的动态性,使得应用程序可以在运行时解析proto文件,不需要进行proto文件的编译.pomelo的实现中,为了更方便地解析proto文件 ...
- P2P直播承载平台与CDN直播承载平台比较
收看软件不一样:CDN直播收看无需安装第三方收看软件,一般操作系统已带播放器软件:P2P直播收看需要安装厂家自己的播放器软件,每家P2P的软件不兼容,收看者要装多套软件才能收看不同内容. 收看人数不一 ...
- 浅析vue数据绑定
前言:最近团队需要做一个分享,脚进脑子,不知如何分享.最后想着之前一直想研究一下 vue 源码,今天刚好 "借此机会" 研究一下. 网上研究vue数据绑定的文章已经非常多了,但是自 ...