打开和closures连接string后,出现“扩展属性”

在我的应用程序中,我可以导入Excel文件,但在思杰我得到一个错误:

Unrecognized database format 

我有一个默认的连接string:

 const CXlsxConnectionString = 'Provider=Microsoft.ACE.OLEDB.12.0; Data Source=%s; Mode=Read; Extended Properties="Excel 12.0;HDR=YES"'; 

%s我设置了.xls或.xlsx文件。 下一个代码:

 conExcel.Close; conExcel.ConnectionString:= GetXlsConnectionString(excelFile); // --> Connectionstring: Provider=Microsoft.ACE.OLEDB.12.0; Data Source=Myexcel.xlsx; Mode=Read; Extended Properties="Excel 12.0;HDR=YES" conExcel.Open; conExcel.Close; // --> Connectionstring: Provider=Microsoft.ACE.OLEDB.12.0; Data Source=Myexcel.xlsx; Mode=Read; 

conExcel (TADOConnection)的打开和closures之后,扩展属性消失了。

当我想加载工作表,如:(dstSheetData – > TADODataSet,与conExcel连接)

  sql := format('select * from [%s]', [sheet]); dstSheetData.Close; dstSheetData.CommandText := sql; dstSheetData.Open; 

我得到错误,因为Extended Properties="Excel 12.0;HDR=YES"消失了。 这发生在我的Citrix服务器上。

当打开命令C:\ Windows \ syswow64 \ rundll32.exe“C:\ Program Files(x86)\ Common Files \ System \ Ole DB \ oledb32.dll”OpenDSLFile C:\ myConnection打开udl时, UDL

这不是连接问题。 问题是打开和closures连接后扩展的属性消失。

如果我使用Provider = Microsoft.ACE.OLEDB.12.0或Provider = Microsoft.Jet.OLEDB.4.0

初始化Connectionstring:

Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\ myExcel.xls; Extended Properties =“Excel 8.0; HDR = Yes”; Persist Security Info = False

connection.open之后的connectionstring:

Provider = Microsoft.Jet.OLEDB.4.0; User ID = Admin; Data Source = C:\ myExcel.xls; Mode = Share Deny None; Jet OLEDB:System database =“”; Jet OLEDB:Registry Path =“”; Jet OLEDB:数据库密码=“”; Jet OLEDB:引擎types= 35; Jet OLEDB:数据库locking模式= 0; Jet OLEDB:全局部分Bulk Ops = 2; Jet OLEDB:全局批量事务= 1; Jet OLEDB:新数据库密码=“”; Jet OLEDB:创build系统数据库= False; Jet OLEDB:encryption数据库= False; Jet OLEDB:不要复制语言环境紧凑= False; Jet OLEDB:紧凑没有副本修复= False; Jet OLEDB:SFP = False ;

conection.close后的连接string:

Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\ myExcel.xls; Persist Security Info = False;

扩展属性=“Excel 8.0; HDR =是”消失了

有人,有什么build议?

好的,我find了一个解决scheme。 我已经改变了CXlsxConnectionString

 const CXlsxConnectionString = 'Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=%s;Mode=Share Deny None;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=35;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don''t Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;';