OLEDB在Windows 10和Microsoft Office 2013下无法从XLSX读取所有行

时间:2018-04-05 09:08:41

标签: oledb ado xlsx xls ms-jet-ace

我有243k行的XLSX文件。

相同的程序在不同的计算机上给出不同的结果。

如果我在Windows 8.1 + Office 2010上打开它,程序会读取所有243k行并且一切正常。

在Windows 10 + Office 2013下,它只读取前237k行,截断最后6k行。

我使用Delphi,后面跟着连接字符串

ADOConnection1.ConnectionString:='Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\File.xlsx;Extended Properties="Excel 12.0;HDR=NO;IMEX=1"';
ADOQuery1.SQL.Text:='SELECT * FROM Sheet1$'
ADOQuery1.Open;
ShowMessage(ADOQuery1.RecordCount.ToString);

1 个答案:

答案 0 :(得分:0)

问题出在表索引上,我搞砸了一些代码。 查询文本从表列表中获取第一个表名而不是常量。

ADOQuery1.SQL.Text:='SELECT * FROM' 但是,表索引因版本而异。 所以选择来自不同的表格

Windows 8.1 + Office2010表列表:

_xlnm#_FilterDatabase
_xlnm#Database
_xlnm#Print_Area
Instruction$
CATALOG$

Windows 10 + Office2013表列表

_xlnm#Database
Instruction$
Instruction$_xlnm#Print_Area
CATALOG$
CATALOG$_xlnm#_FilterDatabase

但是如果我在Excel中打开文件,则只有2张名为“指令”和“目录”的页面。

我不知道237k行来自哪里。