最近接了个小活,使用 ADO 来处理 Excel 数据报表,开始一切很顺利,后来遇到了个麻烦,取得的列的数据类型不一致,在网上找了一下,微软网站有篇文章:"如何在 Visual Basic 或 VBA 中使用 ADO 来处理 Excel 数据",对此是如下描述的:

Excel 不会像关系数据库那样为 ADO 提供有关其数据的详细架构信息。因此,驱动程序必须至少扫描几行现有数据,才能有根据地猜测各列的数据类型。“要扫描的行数”的默认值为八 (8) 行。可以指定从一 (1) 行到十六 (16) 行的整数值,或指定零 (0),扫描所有现有行。这可通过向连接字符串添加可选的 MaxScanRows= 设置,或在 DSN 配置对话框中更改要扫描的行数设置来完成。

但是,由于 ODBC 驱动程序中存在一个错误,所以目前指定“要扫描的行数”(MaxScanRows) 设置不起作用。换句话说,Excel ODBC 驱动程序(MDAC 2.1 和更高版本)始终扫描指定数据源中的前 8 行,以确定各列的数据类型。

有关“要扫描的行数”错误的其他信息,包括一个简单的替代方法,请单击下面的文章编号,查看 Microsoft 知识库中相应的文章:

189897 (http://support.microsoft.com/kb/189897/) XL97:使用 Excel ODBC 驱动程序数据截短到 255 个字符
但是这个程序的数据是不固定的,有时候一列为数字,有时候为文本,怎么办呢?
最后,只好出此下策,在写入EXCEL此列数据的时候,把每个数据前面加单引号('),这样就统一处理成文本,再读取的时候就容易处理了。
不知其它朋友对此有何良策?微软称各列数据只能依靠扫描,有办法强制设置列的数据类型吗?