在我的应用程序中,我可以导入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;';