首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ADO和Delphi从XLS文件导入数据

使用ADO和Delphi从XLS文件导入数据
EN

Stack Overflow用户
提问于 2014-01-16 05:44:54
回答 1查看 4.5K关注 0票数 3

我想使用TADOConnectionTADOTable从Excel文件( xls )导入一些数据。

我连接到文件没有问题,但是当我打开TADOTable时,有些字段有ftFloat数据类型,因为它们在excel文件中的值是数字,但它们的值不是数字!

我希望TADOTable ( Excel的列)的所有字段都具有ftString数据类型。

我将Excel文件中的列类型设置为Text,但不影响任何更改!

我该怎么做?

EN

回答 1

Stack Overflow用户

发布于 2014-01-16 07:47:43

我猜大多数列都是数字的,但也有一些是纯文本的。

ADO在导入Excel时实际上忽略了column type。相反,它猜测列类型,如本MSDN链路中所述

关于混合数据类型的警告 如前所述,ADO必须猜测Excel工作表或范围中每一列的数据类型。(这是,而不是受Excel单元格格式设置影响的。)如果将数值与同一列中的文本值混合,则可能会出现严重的问题。Jet和ODBC提供程序都返回多数类型的数据,但返回少数数据类型的空(空)值。如果这两种类型在列中相同混合,则提供程序选择数字而不是文本。

所有字段作为字符串加载的一种方法是在connection string中使用IMEX extended property,如下所示:

代码语言:javascript
复制
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

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21154190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档