格式导致的Excel导入sql出现异常的解决方法_MsSql

本来程序是正常运行的,有时候会因为用户的excel文档没有按要求的格式来做,才会出现一些异常情况。本以为这次也是一样,后来拿到数据一看,并没有发现什么异常,而且自己又照着做了一些数据,竟然也会出现异常,只好怀疑是自己的程序有问题了。

常言说的好,最难找的是最后一个错误,这话确实不错。我几乎动用了我所掌握的各种手段,程序上真的没办法找出有啥问题了。在一个问题上折腾久了,浪费时间不说,还容易让自己的情绪低落。到后来,还是转去怀疑用户的数据有问题,无意中做了一下格式调整,竟然发现异常不见了。

Excel的单元格格式设置十分丰富,数据一旦被格式化,那你所看到可能已经不是庐山真面目了。比如货币格式,数据本身只是一串数字,并不会包含货币符号。

在我这个程序中,有一列数据为编码,可能是字母和数字的混合,也可能是纯数字,正常情况下,应该设置成文本格式,可能因为纯数字在这种情况下会有一个错误提示,也就是在单元格旁边出现了一个黄色的感叹号,用户大概觉得不对,就设置成了邮政编码这种特殊格式,数据看起来没啥变化,但程序在识别的时候就出现了异常。还有一个字段是月份,程序要求在一位数前补0,如果格式设置为数字,前面的0就没有了,所以必须设置为文本。如果自定义为:00,虽然在excel下显示的数字和想要的一样,但程序在处理时会当成一个数字处理,结果也会不符合要求。

总结一下,对于要导入到数据库的excel数据,不要做格式化处理,保持原始的字符或数字格式是最明智的选择。

时间: 2025-01-29 19:05:01

格式导致的Excel导入sql出现异常的解决方法_MsSql的相关文章

格式导致的Excel导入sql出现异常的解决方法

本来程序是正常运行的,有时候会因为用户的excel文档没有按要求的格式来做,才会出现一些异常情况.本以为这次也是一样,后来拿到数据一看,并没有发现什么异常,而且自己又照着做了一些数据,竟然也会出现异常,只好怀疑是自己的程序有问题了. 常言说的好,最难找的是最后一个错误,这话确实不错.我几乎动用了我所掌握的各种手段,程序上真的没办法找出有啥问题了.在一个问题上折腾久了,浪费时间不说,还容易让自己的情绪低落.到后来,还是转去怀疑用户的数据有问题,无意中做了一下格式调整,竟然发现异常不见了. Exce

win7系统中excel导入外部数据出错的解决方法

  在我们平常办公中,最常用的软件是什么?当然是office软件中的word文档.Execl表格和PPT了,在需要用到文字的时候我们选择word,在做数字统计时用execl,演示图片时使用PPT,这三种办公软件是我们常见的.但是最近有win7的用户来反映说,在用excel导入外部数据时老是出错,无法导入成功,这样不仅损坏外部数据,而且也影响我们的办公效率.下面小编来教大家一招,如何在win7系统电脑中导入外部的数据.   win7系统中excel导入外部数据出错的解决方法如下: 1.首先,咱们需

把excel表格里的数据导入sql数据库的两种方法_MsSql

本来最近在研究微信公众平台的,老大临时交我个任务,把excel表格里的数据导入sql数据库,我想这so easy嘛. 没想都在上面消磨了两天... 把情况介绍下:在数据库中有如下这样结构的表(A表) 我只取关键的及列里面还有很多数据. 有一张id和name对照的excel文件(B表)和N张结构类似的excel表(C表)(没有id那一列)              我的任务在B表中找到C表中数据对应的id后,然后将id加到C表中,最后根据id是唯一的,用C表的数据去更新A表的数据.这里主要涉及了e

SQL Server出现System.OutOfMemoryException异常的解决方法_MsSql

今天在用SQL Server 2008执行一个SQL脚本文件时,老是出现引发类型为"System.OutOfMemoryException"的异常错误,脚本明明是从SQL Server 2008导出的,应该不会出错,研究了好久问题才得以解决. 出现这个错误的主要原因是由于SQL脚本文件太大,估计超过了100M了,解决方法就是把脚本文件分成几个脚本文件,分别去执行即可. 来自微软官方的解决方案: 原因: 因为计算机没有足够的内存来完成请求的操作,则会出现此问题. 在 SQL Server

MySQL导入sql脚本错误:2006 解决方法_Mysql

MySQL导入sql脚本错误:2006 - MySQL server has gone away 到如一些小脚本很少报错,但最近导入一个10+M的SQL脚本,却重复报错: Error occured at:2014-03-24 11:42:24 Line no.:85 Error Code: 2006 - MySQL server has gone away 最终找到原因,原来是MySQL导入大批量数据的时候超出了默认允许最大的数据包所以就提示2006 - MySQL server has go

SQL Server中参数化SQL写法遇到parameter sniff ,导致不合理执行计划重用的快速解决方法_MsSql

parameter sniff问题是重用其他参数生成的执行计划,导致当前参数采用该执行计划非最优化的现象.想必熟悉数据的同学都应该知道,产生parameter sniff最典型的问题就是使用了参数化的SQL(或者存储过程中使用了参数化)写法,如果存在数据分布不均匀的情况下,正常情况下生成的执行计划,在传入在分布数据较多的参数的情况下,重用了正常参数生成的执行计划,而这种缓存的执行计划并非适合当前参数的一种情况. 这种情况,在实际业务中,出现的频率还是比较高的,因为存储过程一般都是采用参数化的写法

SQL SERVER 9003错误解决方法_MsSql

SQLSERVER 9003错误解决方法 只适用于SQL2000 (只适用于SQL2000) "无法打开新数据库 'POS'.CREATE DATABASE 中止. (Microsoft SQL Server,错误: 9003)" 看是9003错误,就想到可能是由于日志文件的原因,再看数据库文件可能损坏,于是想到dbcc checkdb指令. 方法如下: 1.我们使用默认方式建立一个供恢复使用的数据库(如pos).可以在SQL   Server   Enterprise   Manag

一些文件未注册导致mssql表文件无法找开的解决方法_MsSql

通过 Regsvr 32 .exe, 然后注册下列 DLL : C:\Program files\Common Files\System\ADO\Msado15.dll C:\Program files\Common Files\System\Ole Db\Oledb32.dll C:\Program files\Common Files\System\Ole Db\Sqloledb.dllC:\WINNT\System32\Atl.dll在注册的过程中不能在"运行"里面直接注册,必须

excel-用ADO将Excel导入sql server 2008 报error# 3092错误

问题描述 用ADO将Excel导入sql server 2008 报error# 3092错误 我用ADO将一张excel表导入到sql server中去,代码如下: hr=m_pConnection->Open(_bstr_t("Provider=SQLOLEDB;server=TOUCH;Database=MR_NXT;Uid=touch0413;Pwd=LJm_1989915"),"","",adModeUnknown); m_pCo