将Excel文件导入访问时更改数据类型
导入Excel文件进入访问时是否有任何方法可以更改默认数据类型?
(顺便说一句,我正在使用Access 2003)。
我知道我有时有自由将任何数据类型分配给正在导入的每个列,但这只能在我导入非Excel文件时。
编辑:要清除,我理解导入过程中允许更改导入列的数据类型。
事实上,这就是我问的。
出于某种原因,也许它总是Excel文件,也许有些东西我有时不允许更改数据类型:下拉框是灰色的,我只需使用任何数据类型访问方法来正确。
例如,我刚刚尝试在访问中导入大型excel文件(12000+行,〜200列),其中填充了大多数数字(代码:'1 = foo,2 = bar'等等),但是这里的少量alpha代码(a = boo,b =远等)。
访问假定它是一个"数字"数据类型(即使我在Excel文件本身中更改了"格式"值),因此给了我在那些alpha代码上的错误。
如果我被允许更改导入的数据类型,那将节省了一些麻烦。
我是否要求获得任何访问的东西,或者我错过了什么?
谢谢。
编辑:下面有两个答案提供了有用的建议。
将Excel文件作为CSV保存为CSV,然后导入工作效果很好,像Chris OC说的那样简单。
保存导入规范的建议也非常有帮助。
但是,我将DK选择注册表设置答案作为"已接受的答案"。
我喜欢它作为一个答案,因为它是一个只能用于解决我的主要问题的一次性步骤(可以访问错误地分配数据类型)。
简而言之,此解决方案不允许我自己更改数据类型,但它可以准确猜测数据类型,以便存在较少的问题。
解决方案
访问将执行此操作。
在导入过程中,我们可以定义每个列的数据类型是什么。
这可能是由Excel Jet驱动程序默认设置引起的。
检查以下注册表项,并将其值从默认值8变为0,含义"基于所有值的猜测列数据类型,而不仅仅是前8行"。
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet.0\Engines\Excel] "TypeGuessRows"=dword:00000000
请告诉这是否有效。
有几种方法可以做到这一点。
最直接的方式是将.xls文件转换为Excel中的.csv文件,因此我们可以使用导入文本向导导入访问权限,这允许我们在导入期间选择每列的数据类型。
这样做的另一个好处是,CSV(或者文本)文件的导入比XLS文件的导入快得多。
如果我们要多次执行此导入,请将导入设置设置保存为导入规范。
(在导入文本向导中,单击左下方的"高级..."按钮,然后单击"另存为"并提供规范名称以保存我们刚才所做的更改。
)
访问可以做你需要的东西,但没有直接的方式。
我们必须管理某些记录,一个是Excel数据,另一个是最终访问表。
一旦两个记录件都打开,我们可以通过浏览Excel数据并将其添加到访问表中将数据从一个记录集传输到另一个Recordset。
在此阶段,可以按要求更改数据类型。
从CSV文件导入时,我们也可以查看Schema.ini,我们可以找到它,我们可以控制导入过程的每个方面。
访问将允许我们在导入过程中指定数据类型。
问题是在以下时间的"添加"过程中,它不会询问导入到数据类型,它将忘记我们更改它。
我认为这是MS访问中的错误。