各位请了,小弟我急呀! (200分在等你....)(200分)

  • 主题发起人 主题发起人 richness
  • 开始时间 开始时间
R

richness

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟正在编一个学校的管理系统,我想在DELphi 中直接控制excel的打印(操作人员
都是菜鸟,@_@),但小弟只不知用何种方法才能使excelworksheet 与excel 相连,
各位救我!谢了!
 
利用Delphi 5中调用Excel 97

在Delphi 5中简单地封装了一组Microsoft Office自动化对象(Automation servers)。它使得我们很容易地把Office中的应用程序(Word, Excel, PowerPoint, Outlook and Access等)当作一个com应用服务器进行控制。在Delphi 5中已经带了Word与PowerPoint的例子,因为Excel的调用与这两个应用服务器的调用略有不同,所以本人根据这两个例子写了个Excel 97的简单例子以供参考。
一、 步聚
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>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;
二、 示例程序
请下载Demo.zip。

三、说 明
本程序在Win98+Delphi 5+Excel 97下运行通过。本例子还可以作适当的扩充,如DDE、执行宏调用、保存文件、打印文件及对Excel的设置等,此设置方法请参阅Microsoft Excel Visual Basic参考中的Microsoft Excel对象。
 
搜索一下'控制 excel'结果一大堆。
 
http://www.delphiforum.com/delphi/print__report.html
 
利用宏,你把你想要在程序里面控制做的操作,
录制一个宏,然后打开office的脚本编辑器,里面就有VB的源代码,
不过OLE的好像对打印和预览支持的不好,
其他的操作还是没什么问题.
 
后退
顶部