将Excel导入Access:Date是Access表的字段名称

时间:2018-01-22 04:04:36

标签: excel ms-access

我试图将Excel工作表导入Access表,并且工作表具有特定日期(例如12/4/2017)作为列的标题。

当我尝试导入Access时,Access不允许我将该工作表导入到表中,因为" 12/4/2017不是有效的字段名称"

是否有其他方法可以导入工作表或解决此问题?

谢谢

1 个答案:

答案 0 :(得分:2)

  

字段名称,控件和& Access中的对象:

     
      
  • 最长可达64个字符。

  •   
  • 可以包含字母,数字,空格和特殊字符的任意组合 期间(.),感叹号   (!),重音坟墓(``)或括号([ ])。

  •   
  • 不能以前导空格开头。

  •   
  • 不能包含控制字符(ASCII值0到31)。

  •   
  • 在Microsoft Access项目中的表,视图或存储过程名称中不能包含双引号(&#34;)。   <子>(Source

  •   

Excel中的日期和时间值在内部存储为64位浮点数。小数点 的值表示 1899年12月30日以来的天数。小数点的 的值表示自午夜以来的一天的分数

例如:

  • 12:00 Noon存储为0.5

  • 1.0代表 1900年1月1日午夜

  • 2.25代表 1900年1月2日上午6:00

  • 您的示例日期12/4/2017将存储为43073

datetime的解释取决于Microsoft的区域设置的自定义(不是必然是国家/地区government standard date format)。例如,我居住在北美,因此默认情况下,Excel会将12/4/2017解释为日期。

但是,出于各种原因,我更喜欢YYYY-MM-DD的日期格式(技术上命名为&#34; ISO 8601&#34;),因此我changed我的Windows中的格式设置。因此,当我输入12/4/2017时,Excel无法将其识别为日期,因此将 存储为文本 ,但是当我输入2017-12-4时,Excel知道将 存储为日期

除了区域设置,我怀疑您的字段名称可能附加了(即使它们没有被格式化以显示为这样)。

如果您要用作字段名称的单元格实际包含:

April 12, 2017 6:00 AM

,如果格式为M/D/YYYY,&#34;隐藏&#34;时间,显示为:

12/4/2017

即使它实际上存储在内部:

43073.25

鉴于Access字段名称不能包含句点(见上文),Access变得困惑&#34;只有一天的一小部分(.25)。

确保将您的日期用作字段名称不包含时间。

你可以:

  • 将字段名称为 text 的行格式化。

    1. 右键点击行号,然后选择Format Cells
    2. Number标签下,选择Text
  • 使用函数删除时间:

    如果B1包含您希望在A1中用作字段名称的日期时间,则可以使用单元格A1中的Int function(以舍入值向下到一个整数):

    =Int(B1)

    除去分数(时间),但该值仍然存储为数字/日期。

  • 使用函数将日期时间转换为文本:

    如果B1包含您要在A1中用作字段名称的日期,则可以使用单元格A1中的Text function

    =Text(B1, "M/D/YYYY HH:MM")

正如您在图片中看到的那样,如果格式正确,Access允许我将日期用作字段名称:

Access import of Excel sheet with dates as field names

相关进一步阅读:

关于数据库规范化的说明:

仅仅因为你 可以 使用日期作为字段名称,这并不意味着你 。通常认为数据库设计不佳,因此字段名称如此具体。

也许您打算将结构不良的数据导入 fix 这个问题,但如果没有,您应该考虑以更有条理的方式存储数据,这有利于数据库扩展和正常化。

如果您的数据具有特定于日期的字段名称:

ex.1

...然后日期应作为记录的一部分添加,而不是作为字段名称添加:

ex.2

......虽然这还没有正常化。规范化是关于优化效率和允许扩展,因此数据库可能设置得更像:

ex.3

使用这种方法可以实现数据库扩展,数据分析更合乎逻辑(也许可以更容易地找到简的令人不安的饮食习惯)。

唉,我离题了。网上有很多关于数据库规范化的信息,以适应任何经验水平。

进一步阅读关于规范化的内容:

编辑:(结果)

您没有提及您使用哪种方法将数据从Excel导入Access,这可能是相关的(因为有几种可能的组合)。如果您的Excel数据保存在XLSM vs XLS vs CSV等,Access可能会以不同方式处理源数据。可以使用New Source Data导入数据... {{1接口,vs编程与VBA,甚至其他语言。因此,如果您无法使用一种方法(日期格式化为特定方式),请尝试使用其他组合之一。

为简单起见,我将内置界面from File用于XLSM。结果如下所示:

example importing data

请注意,即使 我在标题中包含了一些时间(并且可以无时间地工作),因为它们已正确格式化为文本 { {1}} 已被选中。