Delphi – Excel行通过ADO Query获取
我有以下的Excel文件
我将AdoConnection.ConnectionString设置为
AdoConnection.ConnectionString :=' Provider=Microsoft.Jet.OLEDB.4.0;' + 'Data Source=' +aFileName + ';' + 'Extended Properties=Excel 8.0;';
其中aFileName是Excel文件名。
之后,使用ADOQuery组件(连接设置为AdoConnection),我执行“select * from [Sheet1 $]”。
问题是行16802和17179不在查询结果中,我不知道为什么。 表格中的所有字段都设置为常规。 我正在使用Delphi 7。
你有什么想法?
LE:AdoQuery中所有字段的types都是WideString。 查询中只显示最后2列中的值为“绿色标志”的行。 我不是Excel中的天才,但查询不应该获取表单中存在的所有数据?
默认情况下,它会检查前几行,并使用它来确定列的types。 当它select的types是文本时,该列中的所有数值都将显示为空。
解决scheme是使用导入模式(IMEX = 1)。 请注意,如果你也试图更新行,这有奇怪的behvaiour。
AdoConnection.ConnectionString :=' Provider=Microsoft.Jet.OLEDB.4.0;' + 'Data Source=' +aFileName + ';' + 'Extended Properties="Excel 8.0;IMEX=1"';
PRB:Excel值返回为NULL使用DAO OpenRecordset
想到的一点是,隐藏的行中有一行或多行在任何单元中都没有值。 Excel通常将第一个完全空行和列作为数据范围的界限。 在这种情况下的数据范围不是“只有和OL”的数据范围,而是一组Excel和Excel作为表对待的行和列。 这是你通过Ado访问工作表所做的。
第2行在col D和E中有一些数字字段,您应该将此值更改为string,您可以将单元格的types更改为文本。