您当前位置:设计在线网 >> Acess >> 浏览文章

Excel电子表格中某一列同时包含了文本和数字 插入access会自动置空-excel转换成access

分享到:
本文章讲述了Excel电子表格中某一列同时包含了文本和数字 插入access会自动置空-excel转换成access.

在编写

一个公司的抽奖系统时候,人员数据,他们希望通过excel数据上传,所以就上传至ACCESS,其中有个字段是身份证后6位,所以这个字段可能包含文本和数字,但是导入时候,会自动成了空的,开始百思不得其解,后来查资料,才知道是咋回事。

Excel 驱动程序读取指定源中一定数量的行(默认情况下为 8 行)以推测每列的数据类型。如果推测出列可能包含混合数据类型(尤其是混合了文本数据的数值数据时),驱动程序将决定采用占多数的数据类型,并对包含其他类型数据的单元返回空值。(如果各种数据类型的数量相当,则采用数值类型。)

Excel 工作表中大部分单元格格式设置选项不会影响此数据类型判断。可以通过指定导入模式来修改 Excel驱动程序的此行为。若要指定导入模式,请在“属性”窗口中将 IMEX=1 添加到 Excel 连接管理器的连接字符串内的扩展属性值中。

解决办法: 还有一个哥们儿提出更改Excel宏的方式,虽然并不实用(我们不可能让所有用户去做这样的更改),但却是一个很“彻底”的方法,这里也不妨摘录一下:

问题不在sqlserver ,要在excel中将身份证号字段强制转换为文本格式,如下:

在包含数据的excel文件中加入以下宏:

Sub 将所选单元格内容转换为字符串格式()

ActiveCell.FormulaR1C1 = "'" + ActiveCell.Text

Dim iCol, iRow

For iRow = 1 To Selection.Cells.Rows.Count

For iCol = 1 To Selection.Cells.Columns.Count

Selection.Cells(iRow, iCol).FormulaR1C1 = "'" + Selection.Cells(iRow, iCol).Text

Next iCol

Next iRow

End Sub

加入宏的方法:

1:打开Excel文件

2:进入“工具”-“宏”-“Visual Basic 编辑器”

3:选择菜单“插入”--“模块”,将上面的代码copy到里面

4:关闭“Visual Basic 编辑器”,选择保存

运行宏的方法:

1:进入“工具”-“宏”-“宏”

2:在“宏”界面中选中要执行的宏

3:点击“执行”按钮

选定身份证后6位那一列,执行该宏,之后再进行导入操作。

BAIDU找的原文是这样的——————————————————————————————ODBC怎么样获取Excel表中地所有工作表名

exit(1)表示发生错误后退出程序,exit(0)表示正常退出。

问题描述:我们要导入的excel数据文件中有一列叫做“中标价格”的,这个列里的数据有那种仅包含数字的,也有只有中文的,也有中文和数字混合的, 对这样的数据在查询分析器里面执行

SELECT 中标人,[中标价格]

FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',

'Data Source="D:\招标文件台帐(全).xls";User ID=;Password=;Extended properties="Excel 5.0"')...[招标文件$]

会发现只有那些纯数字的值可以被查出来,其他带汉字显示的都是NULL。查看Excel里的单元格属性,发现本来就是常规的 文本格式,没有什么异常;尝试用SQLSERVER管理器把excel里的表导到库里,发现这个字段的默认转换字段类型为float,这显然不是我们想要的。当Excel作为数据源的时候,数据读取程序(如OLEDB等)是如何判断其列属性的呢?下面这段文字给出了答案:

Excel 驱动程序读取指定源中一定数量的行(默认情况下为 8 行)以推测每列的数据类型。如果推测出列可能包含混合数据类型(尤其是混合了文本数据的数值数据时),驱动程序将决定采用占多数的

推荐阅读:
SQL SERVER 和ACCESS的数据导入导出
access采用sql语句与msql的区别
【转】Access转SQL Server数据库的经验漫谈
推荐文章  
赞助商链接  
热门排行  
主题推广  
中国设计在线网 All Rights Reserved. 互联网违法和不良信息举报
信息产业部备案号:湘ICP备09001063号