用Delphi AdoTable / Grid编辑/更新Excel表格

我正在尝试使用TADOTable和Grid组件来读写XE5-Delphi中的Excel 2000文件。 阅读正在工作,但当试图改变一些领域收到这样的:

“用于更新或刷新的关键列信息不足”

尝试更改游标types,lockingtypes,我在论坛中find的任何内容,都无法正常工作。 大多数的build议是定义一个索引键,但这是Excel,所以都是没用的。

我的代码是:

Begin MastTable.FormMast.ADOTableMast.DisableControls; MastTable.FormMast.ADOTableMast.Edit; for i := 0 to SrcList.Items.Count-1 do begin MastTable.FormMast.ADOTableMast.First; while not MastTable.FormMast.ADOTableMast.EOF do begin; MastTable.FormMast.ADOTableMast.Edit; if MastTable.FormMast.ADOTableMast.FieldByName('FieldNames').Value = SrcList.Items[i] then MastTable.FormMast.ADOTableMast.FieldByName('FieldNames').Value:='Yes' else MastTable.FormMast.ADOTableMast.FieldByName('FieldNames').Value:=''; MastTable.FormMast.ADOTableMast.Post; MastTable.FormMast.ADOTableMast.Next; end; end; MastTable.FormMast.ADOTableMast.Refresh; MastTable.FormMast.ADOTableMast.EnableControls; End; 

我的连接string是:

Provider = Microsoft.ACE.OLEDB.12.0; User ID = Admin; Data Source = N:\ DP-DATA \ Lee_County \ LCPA \ DistPropLCPA_Filters.xls; Mode = ReadWrite; Persist Security Info = False; Jet OLEDB:System database = “; Jet OLEDB:数据库密码=”“; Jet OLEDB:引擎types= 35; Jet OLEDB:数据库locking模式= 0; Jet OLEDB:全局部分批量Ops = 2; Jet OLEDB:全局批量事务= 1; Jet OLEDB:新数据库密码=“”; Jet OLEDB:创build系统数据库= False; Jet OLEDB:encryption数据库=假; Jet OLEDB:不要复制语言环境紧凑= False; Jet OLEDB:紧凑没有副本修复= False; Jet OLEDB:SFP = False; Jet OLEDB:支持复杂数据= False; Jet OLEDB:绕过UserInfovalidation= False;

使用Windows Vista Ultimate 64位,安装Microsoft数据库引擎32位。

有人能帮我吗?


三天六十六人来看,这似乎是一个难题。 坦率地说,我很惊讶,没有人能够(想要?)帮助我。 我强迫自己简化了这个问题:任何人都可以在XE5-DELPHI中演示一个示例代码,它可以读取和写入EXCEL-2000文件? 不是保证,意见,想法,build议! 在XP,VISTA,WIN7 32/64位机上运行的完整function程序的编译版本?! 这在XE5-DELPHI中真的很难吗?