如何实现OleContainer里的Excel的打印设置和预览功能,是否可用ExcelWorksheet控件来操作OleContainer里的Excel?(10

  • 主题发起人 主题发起人 边走边悟
  • 开始时间 开始时间

边走边悟

Unregistered / Unconfirmed
GUEST, unregistred user!
如何实现OleContainer里的Excel的打印设置和预览功能,是否可用ExcelWorksheet控件来操作OleContainer里的Excel?(100分)<br />如何实现OleContainer里的Excel的打印设置和预览功能,
是否可用ExcelWorksheet控件来操作OleContainer里的Excel?
具体怎么做?谢谢!在线等候。
 
当然可以

---- 步聚

1. 创建一个普通Application。

2. 在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet。

3. 连接Excel 97,具体方法如下:

打开Excel97。

Try

ExcelApplication1.Connect;

Except

End;

ExcelApplication1.Visible[0]:=True;

增加一个Workbook。

ExcelWorkbook1.ConnectTo(ExcelApplication1.

Workbooks.Add(EmptyParam,0));



添加一个Worksheet。

var

Temp_Worksheet: _WorkSheet;

begin

Try

Temp_Worksheet:=ExcelWorkbook1.

WorkSheets.Add(EmptyParam,

EmptyParam,EmptyParam,EmptyParam,0)

as _WorkSheet;//(注意)

ExcelWorkSheet1.ConnectTo(Temp_WorkSheet);

Except

ShowMessage('Failure');

End;

end;

关闭Excel.

Try

ExcelApplication1.Quit;

ExcelWorksheet1.Disconnect;

ExcelWorkbook1.Disconnect;

ExcelApplication1.Disconnect;

Except

End;

---- 4. 对Excel的一些操作:

选择当前Workbook的某一Worksheet.

procedure TForm1.ComboBox1DropDown

(Sender: TObject);

var

i: Integer;

begin

ComboBox1.Clear;

For i:=1 to ExcelWorkbook1.

Worksheets.Count do

ComboBox1.Items.Add

((ExcelWorkbook1.Worksheets.Item

as _WorkSheet).Name);

end;



procedure TForm1.ComboBox1Change

(Sender: TObject);

begin

ExcelWorkSheet1.ConnectTo

(ExcelWorkbook1.Worksheets.Item

[ComboBox1.ItemIndex+1] as _WorkSheet);

ExcelWorkSheet1.Activate;

end;



选择某一Workbook:

procedure TForm1.ComboBox2DropDown

(Sender: TObject);

var

i: Integer;

begin

ComboBox2.Clear;

if ExcelApplication1.Workbooks.Count &gt;0 then

For i:=1 to ExcelApplication1.Workbooks.Count do

Combobox2.Items.Add(ExcelApplication1.

Workbooks.Item.Name);

end;



procedure TForm1.ComboBox2Change(Sender: TObject);

begin

ExcelWorkSheet1.Disconnect;

ExcelWorkBook1.ConnectTo(ExcelApplication1.Workbooks.

Item[Combobox2.ItemIndex+1]);

ExcelWorkBook1.Activate;

ExcelWorksheet1.ConnectTo(ExcelWorkBook1.

ActiveSheet as _WorkSheet);

ExcelWorkSheet1.Activate;

end;



对某一单元格进行赋值及取值。

procedure TForm1.Button5Click(Sender: TObject);

begin

ExcelWorksheet1.Cells.Item[SpinEdit2.Value,

SpinEdit1.Value]:=Edit1.Text;

end;



procedure TForm1.Button6Click(Sender: TObject);

begin

Edit1.Text:=ExcelWorksheet1.Cells.Item[

SpinEdit2.Value,SpinEdit1.Value];

end;



选择某一区域

ExcelWorkSheet1.Range['A1','C1'].Select;



打开一个Excel文件。

if OpenDialog1.Execute then

Begin

Try

ExcelWorkBook1.ConnectTo

(ExcelApplication1.Workbooks.Open

(OpenDialog1.FileName,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,

EmptyParam,EmptyParam,0));

ExcelWorkSheet1.ConnectTo

(ExcelWorkBook1.Activesheet

as _Worksheet);

Except;

End;

End;
 
sanwen 先生谢谢你热情的支持,请看看我的题目,再请你帮帮忙。
我要实现的是,操作OleContainer里的Excel。
我是先用OleContainer把Excel文件显示到窗体上,然后我想用Excel的打印设置
和预览功能,可是这两项在工具栏是禁用的。于是我就想用ExcelSheet的打印预览
方法。但是水平低没有实现,请问怎么实现?
 
OleContainer控制的链入的对像是从OlE对像,而ExcelSheet是链接的ComServer对像,
两个的声明在Excel的接口文件定义是不一样的,还没有想到办法,把二者联系起来。
 
同意楼上的!
 
多人接受答案了。
 
后退
顶部