Microsoft Access插入语句从Excel中select数据 – 字段是混合的Int和文本

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

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$];" 

我也研究过一些叫做“schema.ini”的东西,但看起来有些凌乱。

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

贾森

正如你所发现的那样,Access试图有帮助,猜测基于前8行的数据types。

有两种解决方法:

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

经过更多的研究,我学到了很多,但没有find解决办法。 对于任何一个绊倒这条路的人来说,这里有一些值得了解的事情:

  • 出现这个问题是因为Access会查看前8行,并根据该行来决定数据types
  • 有几件事你可以添加到连接string,但没有一个帮助,如果前8行是整数,并有文本值以后
  • 如果第一个8行中至less有一行文字,则IMEX=1将起作用
  • 您可以调整registry设置来查看更多,然后前往这里: [HKLM\Software\Microsoft\Jet\4.0\Engines\Excel
  • 我无法find从VBA中更改registry设置的方法,但是如果使用C#.Net,则完全可以
  • 关于此主题的大多数信息都是关于Microsoft SQL Server的,但仍然有帮助
  • 这里是我find的最有用网站的链接: https : //yoursandmyideas.wordpress.com/2011/02/05/how-to-read-or-write-excel-file-using-ace-oledb-data-供应商/