今天在把一张 Excel 表单导入到Access 2003 中时遇到点问题。Excel 中有一栏是产品型号,前面有近100行的型号是用纯数字表示的,后面的型号才是字母和数字混合编码的。在Access 中用Import 命令导入Excel 表单,报了个错误,说不是所有记录都成功导入。打开错误报告表一看,里面都是“Type Conversion Failure”,并且发生错误的记录行是从字母和数字混合编码的行开始的。检查了一下导入表的设计,发现产品型号字段的数据类型是“Number”,难怪呢,Access 没能正确理解Excel 这栏的数据类型,字母和数字混合的值在转换成“Number”时就会报类型转换错误啦。
我又用Access的“Link Tables”命令把这张Excel 表单放进来看,发现也是同样的问题。前面纯数字表示的型号都能正常显示,后面用字母和数字混合编码的型号就显示为“#Num!”。更奇怪的是,我在Access 中设计好了表,把产品型号字段类型设为“Text”,然后导入,也同样报错,只能导入纯数字的记录行,字母和数字混合编码的仍然报“Type Conversion Failure”。
我仔细留意了一下Access的导入向导,发现走到“Field Options”那一步时,Access就把产品型号字段的数据类型理解为“Double”了,而且还是不能修改的。看样子我只能让Excel 提供正确类型信息了。
在Excel中,检查产品型号栏的格式,是General,改成Text (Format > Cells > Number > Text )。以为可以过关了,执行一遍导入Access 的操作,发现错误依旧。
看样子,上面这种数字转文本的方式不是真的改过来了,换种方法吧。选择产品型号栏,点击Data > Text to Columns 菜单命令,跟着向导走,在第三步时,为“Column data format”选择“Text”。转换完成后,纯数字表示的型号所在单元格左上角会出现绿色的小三角,指示“Number Stored as Text”错误,这就对了。我从Access 导出数据到Excel 时经常看到这种错误提示。再执行一遍导入Access 的操作,这次就顺利通过啦。
注:TEXT函数也可以把数字转换成文本。本文适用于Office 2003。