不知道在OLE控件TOleContainer和Server类控件TExcelApplication中选择哪一个 +50(50分)

  • 主题发起人 主题发起人 awind
  • 开始时间 开始时间
A

awind

Unregistered / Unconfirmed
GUEST, unregistred user!
我在程序中嵌入Excel的时候碰到这样的难题:
不知道在OLE控件TOleContainer和Server类控件TExcelApplication中选择哪一个。

1.TOleContainer控件可以方便的控制以融合方式嵌入我的程序中,但我却不知道如何
去操纵TOleContainer控件中的Excel的数据(比如它的WorkBooks, WorkSheet,
WorkCells等等);
2.而TExcelApplication恰好相反,我懂得操纵它的数据却不懂如何控制它的显示
(除了Visible:=True外);
问题的关键是:如何完全操纵(显示和详细数据读写)内嵌的Excel 。

老板催的紧,望各位大富翁出手打救!
(原来误贴到"非技术问题"版去了,这次再送出50分).
 
1.
var
Cur_WorkBook,Cur_WorkSheet,Cur_Cell:variant;
begin
Cur_WorkBook:=OleContainer1.Application.WorkBooks.Item[1];
Cur_WorkSheet:=Cur_WorkBook.WorkSheets[1];
Cur_Cell:=OleContainer1.Application.GetActiveCell;
end;

2.建议你多看看Excel 的VBA或以前的问题。
 
seeseainwind:
我试了一下你的方法,编译没通过。以前的版本没用过,但是在D5里面TOleContainer
的继承是:TObject->TPresident->TCompoment->TControl->TWinControl->TCustomControl
而且又找不到Application方法。如何使用?关于本版以前的资料,我翻了一整遍,好像还是
找不到能完美解决的方法,所以....,如果你认为哪一篇文章可以解决我的问题,再贴上来,
感激不尽。

all:
出手啊,富翁门。
 

sorry:
Cur_WorkBook:=OleContainer1.oleObject.Application.Workbooks.Item[1];
Cur_WorkSheet,Cur_cell应该没问题的
 
还是有问题,运行时间在调出Excel文件并且显示后,在
Cur_WorkBook:=OleContainer1.OleObject.Application.WorkBooks.Item[1];
这一行报告:“interface not supported”
附我的源码:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, OleCtnrs;

type
TForm1 = class(TForm)
OleContainer1: TOleContainer;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

var
Cur_WorkBook,Cur_WorkSheet,Cur_Cell, v:variant;
begin
OleContainer1.CreateObjectFromFile('C:/ftpdir/uu.xls', False);
OleContainer1.Visible:=True;
Cur_WorkBook:=OleContainer1.OleObject.Application.WorkBooks.Item[1];
Cur_WorkSheet:=Cur_WorkBook.WorkSheets[1];
ShowMessage(Cur_WorkSheet.Cells[8,1]);
Cur_Cell:=OleContainer1.OleObject.Application.GetActiveCell;
end;

end.
 
ExcelApplication1.Connect;
ExcelApplication1.Visible[0]:=True;

ExcelApplication1.Workbooks.Add(NULL,0);
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Sheets[1] as _WorkSheet);
 
procedure TForm1.Button1Click(Sender: TObject);
var
Cur_WorkBook,Cur_WorkSheet,Cur_Cell, v:variant;
begin
OleContainer1.CreateObjectFromFile('C:/test1.xls', False);
OleContainer1.doVerb(ovShow);//显示文档
Cur_WorkBook:=OleContainer1.OleObject.Application.WorkBooks.Item[1];
Cur_WorkSheet:=Cur_WorkBook.WorkSheets[1];
ShowMessage(Cur_WorkSheet.Cells[1,1]);
Cur_Cell:=OleContainer1.OleObject.Application.ActiveCell;//为ActiveCell
end;


 
kurt:
你没有解答我的疑问,你用的是TExcelApplication,但是如何用控制它融合
的嵌入显示到我的程序界面中呢。

(这个问题还有100分呢... @~@)
 
谢谢seeseainwind和kurt的解答,尤其是seeseainwind, 剩下的事情我就找VBA
手册了。派分!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
489
import
I
I
回复
0
查看
781
import
I
后退
顶部