OLEDB未在Windows 10和Microsoft Office 2013下读取XLSX的所有行



我的xlsx文件带有243k行。

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

如果我在Windows 8.1 Office 2010上打开它,则程序将读取所有243K行,并且所有工作正常。

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

IM使用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);

问题是表格索引,我稍微弄乱了代码。查询文本是从表列表而不是常量列出的第一个表名。

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张名为:"指令"one_answers"目录"。

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

最新更新