6

将 Excel 文件导入 Access 时,有什么方法可以更改默认数据类型?(顺便说一下,我使用的是 Access 2003)。

我知道有时我可以自由地将任何数据类型分配给正在导入的每一列,但这只能在我导入非 Excel 文件时进行。

编辑:要清楚,我知道在导入过程中有一个步骤允许您更改导入列的数据类型。

事实上,这就是我要问的。出于某种原因 - 也许它总是 Excel 文件,也许还有其他东西 - 我有时不允许更改数据类型:下拉框显示为灰色,我只需要使用 Access 假定正确的任何数据类型。

例如,我刚刚尝试在 Access 中导入一个大型 Excel 文件(12000+ 行,~200 列),其中第 105 列(或类似的东西)填充了大部分数字(代码:1=foo, 2=bar等),尽管有少数那里也有 alpha 代码(A=boo,B=far 等)。Access 假设它是一种Number数据类型(即使在我更改了FormatExcel 文件本身的值之后),因此在这些 alpha 代码上给了我错误。如果允许我在导入时更改数据类型,那会为我省去一些麻烦。

我是在要求 Access 不会做的事情,还是我错过了什么?谢谢。

编辑:下面有两个答案可以提供有用的建议。将 Excel 文件保存为 CSV,然后像Chris OC所说的那样导入效果很好并且很简单。保存导入规范的建议也很有帮助。但是,我选择了DK的注册表设置答案作为“接受的答案”。我喜欢它作为答案,因为它是一次性的步骤,可用于解决我的主要问题(让 Access 错误地分配了数据类型)。简而言之,这个解决方案不允许我自己更改数据类型,但它可以让 Access 准确猜测数据类型,从而减少问题。

4

8 回答 8

3

有几种方法可以做到这一点。最直接的方法是在 Excel 中将 .xls 文件转换为 .csv 文件,这样您就可以使用“导入文本向导”导入 Access,该向导允许您在导入期间选择每列的数据类型。

这样做的另一个好处是导入 csv(或文本)文件比导入 xls 文件快得多。如果您要多次执行此导入,请将导入设置设置保存为导入规范。(在导入文本向导中,单击左下角的“高级...”按钮,然后单击“另存为”并提供规范名称以保存您刚刚所做的更改。)

于 2008-09-23T17:50:37.727 回答
2

可能是由 Excel Jet 驱动程序默认设置引起的。查看以下注册表项并将其值从默认的 8 更改为 0,这意味着“根据所有值猜测列数据类型,而不仅仅是前 8 行”。

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel]
"TypeGuessRows"=dword:00000000

请告诉这是否有效。

于 2008-09-23T17:36:21.210 回答
1

打开你的excel文件。在主页选项卡中,将格式从常规更改为文本。然后导入访问

于 2021-02-21T02:18:27.293 回答
0

Access 可以满足您的需求,但没有直接的方法。您必须管理一些记录集,一个是您的 Excel 数据,另一个是您的最终 Access 表。打开两个记录集后,您可以通过浏览 Excel 数据并将其添加到 Access 表中,将数据从一个记录集传输到另一个记录集。在这个阶段,可以根据要求更改数据类型。

于 2008-09-23T19:56:35.537 回答
0

从 CSV 文件导入时,您还可以查看schema.ini,您会发现通过它您可以控制导入过程的各个方面。

于 2008-09-24T09:11:10.883 回答
0

Access 将允许您在导入过程中指定数据类型。问题出在以下时间的“追加”过程中,它不会询问导入数据类型,它会忘记您更改它。我认为这是 MS Access 中的一个错误。

于 2018-05-02T00:59:14.863 回答
0

这是一个旧帖子,但问题仍然存在!我同意迪帕克的观点。继续这个想法:

Access 根据 Excel 中的字段类型确定链接或导入 Excel 文件时的字段类型。如果它们都是默认值,它会查看前 X 行数据。解决此问题的几种方法:

  1. 打开 Excel 文件并添加大约 6 行(如果有,则在字段标题下)模拟您想要的类型。如果您喜欢所有文本,请在前六行的每个单元格中输入“abcdef”。

  2. 打开 Excel 文件,突出显示所有单元格,右键单击,然后将格式更改为“文本”或您喜欢的任何格式。保存,然后链接/导入到 Access。

  3. 每次使用宏(VBA 脚本)为您执行第 2 步:

Public Function fcn_ChangeExcelFormat()
On Error GoTo ErrorExit

Dim strExcelFile As String
Dim XL_App As Excel.Application
Dim XL_WB As Excel.Workbook
Dim XL_WS As Excel.Worksheet

strExcelFile = "C:\My Files\MyExcelFile.xlsx"

Set XL_App = New Excel.Application

Set XL_WB = XL_App.Workbooks.Open(strExcelFile, , False)
Set XL_WS = XL_WB.Sheets(1)  '  1 can be changed to "Your Worksheet Name"

With XL_WS
   .Cells.NumberFormat = "@"  'Equiv to Right Click...Format Cells...Text
End With

XL_WB.Close True
XL_App.Quit

NormalExit:
Set XL_WB = Nothing
Set XL_App = Nothing
Exit Function
   
ErrorExit:
strMsg = "There was an error updating the Excel file!  " & vbCr & vbCr & _
         "Error " & Err.Number & ": " & Err.Description
MsgBox strMsg, vbExclamation, "Error"
Resume NormalExit
End Function
于 2021-08-18T14:28:58.993 回答
-1

Access 将执行此操作。

在您的导入过程中,您可以定义每列的数据类型。

于 2008-09-23T17:26:04.743 回答