我有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);
答案 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行来自哪里。