使用ado连接excel表,excel表字段内容超过255时,会截断处理,而且参数设置和字段数据类型设置均不起作用,而且规律很乱:
ADOConExcel.ConnectionString := 'Provider=Microsoft.ACE.OLEDB.12.0;' +
'Extended Properties="Excel 12.0 Xml;HDR=YES;IMEX=1;MaxScanRows=0";Persist Security Info=False;Data Source=' + filename + ';';
IMEX=1;MaxScanRows=0;TypeGuessRows=0,这三个参数设置不起作用;有时候你将超长字段提到前几行就可以读出,大概是8行以前,AI回答是因为加载时Microsoft.ACE.OLEDB.12.0驱动只扫描前8行。
解决的办法是用delphi自带的OLE控件、使用XLSReadWriteII、使用TMS等。
或者:将注册表键 TypeGuessRows 设为0。路径示例:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Access Connectivity Engine\Engines\Excel\TypeGuessRows(具体版本号随 Office 而变,win11+D10.4测试有效)。