OLEDB 未在 Windows 10 和 Microsoft Office 2013 下从 XLSX 读取所有行
Posted
技术标签:
【中文标题】OLEDB 未在 Windows 10 和 Microsoft Office 2013 下从 XLSX 读取所有行【英文标题】:OLEDB not reading all rows from XLSX under Windows 10 and Microsoft office 2013 【发布时间】:2018-04-05 09:08:40 【问题描述】:我有 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】:问题出在表索引上,我有点搞砸了代码。 查询文本从表列表中获取第一个表名而不是常量。
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 张名为:“Instruction”和“Catalog”的工作表。
我不知道这 237k 行是从哪里来的。
【讨论】:
以上是关于OLEDB 未在 Windows 10 和 Microsoft Office 2013 下从 XLSX 读取所有行的主要内容,如果未能解决你的问题,请参考以下文章
Windows Azure 远程站点“Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册 [重复]
Microsoft ACE OLEDB 12.0 未在本地计算机上注册 - 但它是
Microsoft.Jet.OLEDB.4.0' 提供程序未在本地计算机上注册
win10:未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序