我将一些数据从Excel导入Access,我面临一些奇怪的问题。
问题:
我正在使用DoCmd.TransferSpreadsheet方法将Excel数据导入Access,如下所示:
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "Excel_Data", "Filename", True
这" Excel_Data" table不是预先创建的,因此Access会在它自己创建它。为什么?如果我预先创建它,那么用户必须以完全相同的顺序从Excel导入数据到目标表(Excel中的列A是Access等中的第1行..)。
但是如果您没有预先创建It,那么Access会在Excel中创建任何表格,您可以根据列名称仅导入您希望的数据。现在,这就是它被困的地方....
我不知道为什么,但是对于我喜欢的其他所有Imports,Access只创建文本字段 - 然后我的导入到目标表工作。
但是在其中一个Imports Access中创建了一个Number字段,然后Import into destination table不再工作了。所有Excel数据都格式化为通用。
有人知道如何避免这种情况吗?
基本上我只想根据列名将Excel数据导入Access,无论Excel中的列顺序如何。
感谢您的帮助!
答案 0 :(得分:1)
我建议使用这样的查询而不是TransferSpreadsheet
SELECT * INTO Table1
FROM [Sheet1$D3:E24]
IN "C:\Temp\Test.xls" [Excel 12.0;HDR=YES;IMEX=1];
注意,IMEX = 1允许您禁止数据类型猜测,Access将始终创建文本字段。
此外,您还可以从指定范围的电子表格中导入数据,并使用WHERE子句过滤不必要的数据
答案 1 :(得分:0)
感谢所有答案,但我已经解决了这个问题。在执行导入时避免任何问题的最佳方法是在DoCmd.TransferSpreadsheet方法完成后使用ALTER Table命令。我只是将我的所有列都更改为Text格式,将所有其他表格更改为Text字段,现在每次操作数据都可以正常工作。