我想使用TADOConnection和TADOTable从Excel文件( xls )导入一些数据。
我连接到文件没有问题,但是当我打开TADOTable时,有些字段有ftFloat数据类型,因为它们在excel文件中的值是数字,但它们的值不是数字!
我希望TADOTable ( Excel的列)的所有字段都具有ftString数据类型。
我将Excel文件中的列类型设置为Text,但不影响任何更改!
我该怎么做?
发布于 2014-01-16 07:47:43
我猜大多数列都是数字的,但也有一些是纯文本的。
ADO在导入Excel时实际上忽略了column type。相反,它猜测列类型,如本MSDN链路中所述
关于混合数据类型的警告 如前所述,ADO必须猜测Excel工作表或范围中每一列的数据类型。(这是,而不是受Excel单元格格式设置影响的。)如果将数值与同一列中的文本值混合,则可能会出现严重的问题。Jet和ODBC提供程序都返回多数类型的数据,但返回少数数据类型的空(空)值。如果这两种类型在列中相同混合,则提供程序选择数字而不是文本。
将所有字段作为字符串加载的一种方法是在connection string中使用IMEX extended property,如下所示:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;
Extended Properties="Excel 12.0 Xml;HDR=YES;IMEX=1";将IMEX设置为1使ADO将所有列视为文本,如下面的ConnectionStrings页面所述
当您希望将文件中的所有数据作为文本处理时,请使用此IMEX=1,重写"General“列类型以猜测列中的数据类型。
您可以在此所以问题中找到有关IMEX属性的更多信息。
更新:使用它检索的字段数据类型将是ftWideString。
https://stackoverflow.com/questions/21154190
复制相似问题