我有以下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中所有字段的类型都是WideString。在查询中仅显示最后2列中的值具有“绿色符号”的行。我不是Excel中的天才,但查询不应该获得表格中存在的所有数据吗?
答案 0 :(得分:2)
默认情况下,它检查前几行并使用它来确定列类型。当它选择的类型是文本时,该列中的所有数值都将显示为null。
解决方案是使用导入模式(IMEX = 1)。请注意,如果您还尝试更新行,则这有点奇怪。
AdoConnection.ConnectionString :=' Provider=Microsoft.Jet.OLEDB.4.0;' +
'Data Source=' +aFileName + ';' +
'Extended Properties="Excel 8.0;IMEX=1"';
答案 1 :(得分:1)
我想到的一件事是,在隐藏的行中,有一行或多行在任何单元格中都没有值。 Excel通常将第一个完全空的行和列作为数据范围的边界。在这种情况下,数据范围不是“just and ol”数据范围,而是Excel将其视为表格的一组行和列。这是通过Ado访问工作表所做的。
答案 2 :(得分:1)
第2行在col D和E中有一些数字字段,你应该将这个值改为字符串, 您可以将单元格类型更改为文本。