导入 Excel 电子表格时 MS Access 2013 类型转换失败
Posted
技术标签:
【中文标题】导入 Excel 电子表格时 MS Access 2013 类型转换失败【英文标题】:MS Access 2013 Type Conversion Failure when importing Excel Spreadsheets 【发布时间】:2014-02-05 19:14:40 【问题描述】:我一直在尝试将 Excel 电子表格作为表格导入 MS Access 2013(通过界面),并为整数类型的字段“SegmentID”产生“类型转换失败”错误。
在 Excel 电子表格中检查失败的行号时,它们确实是整数,就像所有其他的一样。 即使重新输入并将整列设置为数字(并删除小数位)仍然会产生相同的错误。我需要对许多电子表格进行此导入,几乎我尝试的每个电子表格都有相同的错误,从少数到数千个随机分布在整个电子表格中。电子表格为 .xlsx 格式。
任何想法将不胜感激。我曾想过手动执行此操作,例如:
DoCmd.RunSQL "CREATE TABLE TableName ([Date] DATETIME, [Name] TEXT, ETC..."
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "TableName", "C:\ExcelData.xlxs"
【问题讨论】:
您能否提供一个复制问题的示例 .xlsx 文件? 这里是Spreadsheet。对于这个特定的工作表,有一些错误,但类型仍然相同。我可能无法制作其他的,因为有些可能是数据敏感材料。这里也是Spreadsheet Import Errors。 我建议将 xls 转换为 csv,看看使用不同的文件格式会发生什么 【参考方案1】:整数范围从 -32,768 到 +32,767 。您的段 id 看起来需要一个 LONG 整数。您的电子表格似乎转到了 33581,这使您超出了整数范围。
【讨论】:
我同意。我刚刚在 Access 2010 中测试了一个导入,如果 Access 表中的 [SegmentID] 字段定义为Long Integer
,则不会出现错误。
一些导入错误发生在 SegmentID 为 680 的行中。那我检查了 SegmentID 的导入表和数据类型,它确实是一个长整数。 (编辑,我看到你的@GordThompson 我会再试一次)
我的错误,我似乎无法重新创建段在该范围内的错误,并且使用长整数修复了导入错误。感谢您的帮助。【参考方案2】:
正如我之前提到的,我将尝试手动创建表并导入数据。所有数据都被传输到创建的表中,没有错误或数据丢失。在 MS Access 的“Visual Basic”视图中点击Ctrl + G
,您可以使用此代码。
DoCmd.RunSQL ("CREATE TABLE Wildlife (ID COUNTER NOT NULL PRIMARY KEY, SegmentID INT, RouteID TEXT, Type TEXT, Subtype TEXT, Subtype2 TEXT);") DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "Wildlife", "C:\PathToFile\Wildlife.xlsx",-1
ID COUNTER NOT NULL PRIMARY KEY
添加作为主键的自动编号字段 ID
第二个Do.Cmd
末尾的-1
参数告诉Access,该字段中的第一行是列名。 DoCmd.TransferSpreadsheet Method (Access)
【讨论】:
以上是关于导入 Excel 电子表格时 MS Access 2013 类型转换失败的主要内容,如果未能解决你的问题,请参考以下文章
将 Excel 中的动态和静态范围导入到 MS-Access 中,而不是从单元格 A1 开始
将 Excel 中的两列导入现有的 Access2010 表中使用转移电子表格时出错