OleContainer中的 ExcelSheet(200分)

  • 主题发起人 主题发起人 SeaSky
  • 开始时间 开始时间
S

SeaSky

Unregistered / Unconfirmed
GUEST, unregistred user!
我有Form 如下:

type
TForm1 = class(TForm)
OleContainer1: TOleContainer;
Panel1: TPanel;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
OleContainer1.CreateObjectFromFile('C:/WORK/TRIAL.XLS');
end;
end.

-------
OLE容器中的TRIAL XLS是一个预制的空表, 我想用程序往TRIAL.XLS中的预定位置填写内容, 并需要调用EXCEL中的打印和打印预览方法, 还有
需要引用XLS表格中的位置, 例如要想一个命名为'NAMECELL'的格子
填写内容 或 取其的行号和列号.

还有如何实现在指定位置的CELL插入一行.

请问如何写, 我只知道通过 OleContainer1.OleObject 实现,
却不知如何写, 哪位熟悉EXCEL OLE操作的写个例子.


 
好象有doVerb?
 
例子如下:
OLECONTAINER应该也差不多, 你改XL为 OLECONTAINER1.OLEOBJCET应行了.
不行再说.

VAR
XL:VARIANT;
procedure TForm1.FormCreate(Sender: TObject);

begin
xl:=createoleobject('Excel.application');
xl.Workbooks.Open('C:/work/复件 TRIAL.XLS');
xl.visible:=true;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin

xl.Range['B3'].Select;
xl.ActiveCell.FormulaR1C1 := '1231243;alskdjf';
xl.ActiveWindow.SelectedSheets.PrintPreview;
xl.ActiveWindow.SelectedSheets.PrintOut;
xl.Range['A5:C8'].Select;
xl.ActiveWorkbook.Names.Add('namecell', '=Sheet1!R5C1:R8C3');
xl.Range['A5:C8'].Select;
xl.ActiveCell.FormulaR1C1 := 'asdf';
xl.ActiveCell.FormulaR1C1 := 'asdf';
xl.Range['A7'].Select;
xl.ActiveCell.FormulaR1C1 := 'asdf';
xl.Rows['6:6'].Select;
xl.Selection.Insert(1);
xl.Range['A8'].Select;
xl.Selection.EntireRow.Insert;

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
xl.quit;
end;
 
发现Ole中的object不是excelapplication , 而是
excel workbooks.并且 引用object属性和方法时, 需要
在Ole容器中的内容被激活时,才能引用, (比较不
方便, 希望直接引用, 不用激活OLE, 不知道有没有
可能性? )
 
接受答案了.
 
后退
顶部