我的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行来自哪里。