关于Delphi和Excel的相互调用的问题(有点难度,200分~!)(200分)

  • 主题发起人 主题发起人 nanami
  • 开始时间 开始时间
N

nanami

Unregistered / Unconfirmed
GUEST, unregistred user!
在程序中,我将数据库中的数据导出到Excel中显示,让用户编辑(修改数据区中间的数值),编辑完成以后,我想将用户修改的数据保存到数据库中,这个过程中,我能否利用Excel的保存按钮或者退出按钮来将数据保存到数据库中间呢?论坛上面一般都是讨论怎么在Delphi中操作Excel,能否讨论一下,怎么利用Excel中的事件?
我想了一种思路,自己做一个模板,在模板中间编写VBA事件,但是这又要涉及怎么在Excel的宏中间调用我程序中的函数(或过程),能否这样调用呢?有没有什么好的书能解决这个问题?
 
掉下去了,希望快点有人回答啊~~
能否做一个代理服务器实现程序和Excel之间的相互调用呢?(思路而已)
 
我来听课了!
 
晕,我想要老师啊~~~~~
 
1、可以动态创建TSTRINGLIST将数据库内容方于其中后然后SAVETO到EXCEL
2、可以动态创建TSTRINGLIST将EXCEL数据LOADFROM过来后保存到数据库
 
我没法判断调用保存的时间啊!保存的方法很多种。我是说,在Excel的Save时间,或者Close事件中能不能调用我自己在Delphi中写的函数,这样我就能将用户修改的数据保存到数据库了
 
完全不必牵扯到宏那些东西,你只要把数据导成xls文件,然后调用excel打开,
保存退出后,你检测excel的实例是不是已经终止了,如果是就读取刚才你导
出的xls文件,最多就是把另存为按钮给禁用掉.
 
那我不是随时要监控Excel是否已经退出???我怎么知道用户要操作多久啊?
 
请顺便关注一下我的问题:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1985405
 
To:zealothasu 能详细一点说么?
另外,我不想程序就挂在那里不动。我想比较好的方法应该是在Excel中调用自己的Delphi函数。
 
还没有人回答,有没有人做过这种调用呢?以前我有一个同事做过,可惜他现在人不知道在哪里去了。
 
用OleContainer, 可以监控Excel
也可以完全控制Excel,读单元格写上的数据
 
这个问题难度不大
首先你要在自己的项目里面增加一个自动对象,
菜单File->New->Other->ActiveX->Automation Object
这样别的程序就可以通过这个自动对象调用你的程序了
然后写一个com AddIn 在Excel中增加工具栏和按钮,并
在按钮事件中通过自动对象调用你的程序。
com AddIn的做法在下面
http://www.delphibbs.com/keylife/iblog_show.asp?xid=1272
 
To: xuzhudi
你的方法可以考虑,不过用OleContainer老是感觉有一些BUG,比如,在编辑时,工具条的显示就非常不正常。
 
To:Tassadar
你的方法值得借鉴,我先去看看,如果可以我就来散分![:D][:D][:D]
 
To:Tassadar

private
FIntf: CommandBarButton;
FOnClick: TCommandBarButtonClick;
function GetDefaultInterface: CommandBarButton;
procedure SetOnClick(const Value: TCommandBarButtonClick);


上面的代码中间,CommandBarButton是什么啊???是TCommandBarButton吧??
 
CommandBarButton是office的一个接口在office2000单元里面定义的
 
这课听得爽呀.
 
To:Tassadar
aStream := TResourceStream.CreateFromID(HInstance, 1, RT_RCDATA);
这句话中间RT_RCDATA是什么意思?哪里定义的?
另外,能介绍一下你说的下面的具体做法或者参考文档位置么?
//CopyBitMapToClipBoard; //这两句话是给按钮设定一个外部图标,
//aButton.PasteFace; //你要增加一个rcdata的bitmap资源bitmap大小为16*16,具体怎么做请参考其他文档

 
后退
顶部