'扩展属性'打开和关闭连接字符串后输出

时间:2015-11-03 16:41:32

标签: excel delphi citrix

在我的应用程序中,我可以导入Excel文件,但在Citrix上我收到错误:

Unrecognized database format

我有一个默认的连接字符串:

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)后,扩展属性消失了。

当我想加载表格时:(dstSheetData - > TADODataSet,与conExcel相关联)

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

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

当我打开udl on命令时,与udl的连接正常工作 C:\ Windows \ syswow64 \ rundll32.exe" C:\ Program Files(x86)\ Common Files \ System \ Ole DB \ oledb32.dll" OpenDSLFile C:\ myConnection.udl

这不是连接问题。问题是在打开和关闭连接后,扩展属性会消失。

如果我使用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&#34 ;; 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 ="&#34 ;; Jet OLEDB:注册表路径="&#34 ;; Jet OLEDB:数据库密码="&#34 ;; Jet OLEDB:引擎类型= 35; Jet OLEDB:数据库锁定模式= 0; Jet OLEDB:全局部分批量操作= 2; Jet OLEDB:全局批量事务= 1; Jet OLEDB:新数据库密码="&#34 ;; Jet OLEDB:创建系统数据库= False; Jet OLEDB:加密数据库= False; Jet OLEDB :不要在Compact上复制Locale = False; Jet OLEDB:Compact没有副本修复= False; Jet OLEDB:SFP = False;

conection.close之后的Connectionstring:

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

扩展属性=" Excel 8.0; HDR =是"已经不见了

有人,有什么建议吗?

好的,我找到了解决方案。 我已经更改了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;';

0 个答案:

没有答案