Microsoft访问插入语句从Excel中选择数据---字段是混合的Int and Text



我正在尝试使用插入查询从 Excel 文件中选择数据并将其插入到 Access 表中。我遇到的问题是Excel列之一可以是字母,数字或两者兼而有之。我想选择数据作为文本,但我似乎只得到文本和文本/数字条目的空白。如果我对 Excel 文件进行排序,以便文本项位于第一行,则所有数据都将转换。我尝试了以下方法:

strSQL = "INSERT INTO tblImport ([TIMS Company Code]) " & _
    "SELECT [TIMS Company Code] " & _
    "FROM [Excel 8.0;HDR=YES;DATABASE=" & xlPath & "].[Manual Entry$];"

====

==================================================================================
strSQL = "INSERT INTO tblImport ([TIMS Company Code]) " & _
    "SELECT CStr([TIMS Company Code]) " & _
    "FROM [Excel 8.0;HDR=YES;DATABASE=" & xlPath & "].[Manual Entry$] " & _
    "WHERE [TIMS Company Code] IS NOT NULL;"

====

==================================================================================
strSQL = "INSERT INTO tblImport ([TIMS Company Code]) " & _
    "SELECT (CAST([TIMS Company Code]) AS TEXT) " & _
    "FROM [Excel 8.0;HDR=YES;DATABASE=" & xlPath & "].[Manual Entry$];"

我也研究过一种叫做"模式.ini"的东西,但它似乎有点超出我的头脑。

我感谢有人可以提供的任何帮助。

杰森

正如您已经发现的那样,Access 会尝试提供帮助,并根据前 8 行猜测数据类型。

有两种解决方法:

  1. 在顶部添加一行虚拟文本 - 阅读时丢弃它
  2. 将文件另存为 CSV,并使用已保存的导入规范

经过更多的研究,我学到了很多东西,但没有找到解决方案。对于任何在这条路上跌跌撞撞的人,这里有几件事值得了解:

  • 出现此问题的原因是 Access 查看前 8 行并基于该行对数据类型做出决定
  • 可以向连接字符串添加一些内容,但如果前 8 行是整数并且后面有文本值,则它们都无济于事
  • 如果前 1 行文本中至少有 8 行文本,IMEX=1将起作用
  • 您可以调整注册表设置以查看比前 8 个设置更多的内容,方法是转到此处:[HKLMSoftwareMicrosoftJet4.0EnginesExcel
  • 我无法找到从VBA中更改注册表设置的方法,但是如果您使用C#.Net,那么完全有可能
  • 有关此主题的大多数信息都与Microsoft SQL Server有关,但仍然很有帮助
  • 这是我找到的最有用的网站的链接:https://yoursandmyideas.wordpress.com/2011/02/05/how-to-read-or-write-excel-file-using-ace-oledb-data-provider/

最新更新