如何将Excel工作簿嵌入到Delphi的一个Form中?(300分)

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

nibble

Unregistered / Unconfirmed
GUEST, unregistred user!
在我的Delphi程序中,需要打开Excel文件"D:/myExcel.xls",并且将该文件对应的工作簿嵌入在一个Delphi的Form中,工作簿应该包含的所有工作表,就像直接在Excel中打开时显示的那样。但是我希望禁止用户将工作簿另存为其它文件,或者通过复制,粘贴的方式获取其中的数据。请问这样的情况用OLE应该怎么实现?最好能提供一个类似的例子。多谢。
 
参考下,很好的。
http://delphibbs.com/delphibbs/dispq.asp?lid=737517
 
.....
ExcelReport: TOleContainer;
.....

if ExcelReport.State <> osEmpty then ExcelReport.DestroyObject;
ExcelReport.CreateObjectFromFile('D:/myExcel.xls', False);
ExcelReport.DoVerb(ovPrimary);
 
用ExpressSpreadSheet组件。
只需LOADFROMFILE一个函数就行了。
 
或者用F1Book控件,用不着这么麻烦的镶嵌在Form的Excel,要是以后打D版用户没有装Excel怎么办?[:D]
 
DELPHI有自带的电子表格控件,不过我建议你用OLE自动化代码;
 
我用施海鹏的方法将TOleContainer添加到Form中,但是有以下几点问题无法解决:
1. Excel的菜单会作为Form的主菜单而显示出来,如何将其隐藏或者Disable.
2. 如何禁止用户对Excel的工作表中的单元进行编辑和复制,粘贴?
3. 如何禁止用户用热键对工作表进行操作。
禁止以上功能的同时,要求用户仍然可以用滚动条浏览单元,或者在不同的工作表之间进行自由的切换。总之,要保证用户可以查看所有的单元数据,但是要禁止其对单元进行修改和复制。
 
我用GetActiveOleObject方法来控制excel非常成功,但遇到以下问题:
从存在的excel文件中读取数据到程序中,发现速度暴慢(约两列单元格,共150行左右),费时约3分钟左右(可能还要长)。
是否都这样?有提高速度的办法吗?
由于本人刚建立帐号,还不能提问,请大家包涵啊!
 
强烈推荐使用用ExpressSpreadSheet组件,可配合用Express Print system进行打印。
 
建议你全文检索一下
代码懒得写了,例子多的是
 
倒,我都成功了,关键是速度。
 
大富翁上的代码我基本上都查过了,无法实现我提的几点要求,即:
1. Excel的菜单会作为Form的主菜单而显示出来,如何将其隐藏或者Disable.
2. 如何禁止用户对Excel的工作表中的单元进行编辑和复制,粘贴?
3. 如何禁止用户用热键对工作表进行操作。
禁止以上功能的同时,要求用户仍然可以用滚动条浏览单元,或者在不同的工作表之间进行自由的切换。总之,要保证用户可以查看所有的单元数据,但是要禁止其对单元进行修改和复制。
 
对不起,但十万火急:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2288008
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2292702
请各位DFW帮忙,万分感谢
 
用F1BOOK控件,在ACTIVEX下
 
后退
顶部