如何将Excel表与Access链接并防止由于错误的数据类型转换而导致NULL值?

时间:2018-08-27 06:17:57

标签: excel database ms-access

在当前项目中,我需要保留一个Excel文件,该文件将从计算机中的值获取到Access数据库以使用它们并将其导入数据模型中。 问题在于某些值由于保存方式而给出无效的结果。例如,时间戳保存为

  

030420而不是03:04:20,Access无法处理该问题,并给了我#NUMBER

我不能简单地在Excel中更改数据类型,因为整个Excel每小时都会被无法影响的来源刷新。

任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:1)

如果Erik的建议不起作用,您可以
-创建Excel源的备份副本
-调整文件:在有问题的列的第一行中输入文本
-将调整后的文件链接到Access
-将真实文件放回原处。
现在,有问题的列应读取为“文本”,您可以构建一个查询来解决任何问题,例如转换,空值处理...

答案 1 :(得分:1)

链接(不导入)Excel文件,您就有一个链接表。

现在,将此链接表用作simpel select查询中的源,您可以在其中修改数据并根据需要对字段进行别名。例如:

Select 
    F1 As SomeName, 
    F2 As OtherName, 
    TimeSerial(Mid([F5],1,2),Mid([F5],3,2),Mid([F5],5,2)) As TrueTime
From
    LinkedTable
Where
    F7 Is Not Null

使用此查询进行导入。

答案 2 :(得分:0)

考虑查询Excel文件而不是使用链接表。

查询可以直接查询Excel范围:

SELECT * FROM
[Excel 12.0 XML;DATABASE=PathToMyExcel;HDR=Yes;IMEX=1].[MyRange] t

然后,您可以使用诸如TimeSerial之类的函数将数字转换为时间值。