delphi 5 如何使用office97.dcu等(200分)

  • 主题发起人 主题发起人 haichang
  • 开始时间 开始时间
H

haichang

Unregistered / Unconfirmed
GUEST, unregistred user!
在 C:/Program Files/Borland/Delphi5/Imports/目录中有access97.dcu,excel97.dcu,在Delphi 5的IDE里组件选板中也有一个Servers页包括Office97的控件。但由于本人刚刚接触Delphi不知如何使用,尤其是excel97和access97的使用,请各位高手帮忙,谢谢。 
 
你可以在程序中定义并使用Office对象
其使用方法和在VB中是一样的
因为本来Delphi和VB用的都是一样的类
 
同意 Wrench的说法,》
 
那么如果我用的是off 2000呢?
 
Office 2000也是一样的
以前Office 97的对象,也都还能用
至于增加了什么东西
我就不知道了
 
wrench:
createobject我能引用access
但server页我该如何访问access report
delphi5 demo里只有powerpoint,word
而且没有tAccessApplication,如何办?
 
TO Haichang

不需要那么麻烦的,Delphi5里自带了可以控制Office97的控件,在Servers组件面板里,可以在 /Demos/Activex/Oleauto/SrvComp 里找到例子
 
wrench,请在回答中着重Excel和Access的使用说明。我曾经用VB写过一个程序,
其中使用了EXCEL的打印,VB中支持VBA编程,D5中如何处理?
 
Server页,即DELPHI的OFFICE控件是<big><big>破烂!</big></big>
无法省略参数,又没源码。我还是直接用OleVarant做方便。

至于如何用VBA,很简单:
yourOfficeObject.Workbooks.Add;//一样用,只是语法像DELPHI的。
 
cj:
你太粗心了吧!用查找:word97.pas
haichang:
你的意思是要在excel,access中打印吗?
 
autumn:
是的,用Excel打印,使用Access数据库。
 
有吗????
也许……
 
haichang:
你用5还是4?
 
早在delphi 4.0就有word97.pas了,位置在:
D:/Program Files/Borland/Delphi4/Demos/Activex/Oleauto/Word8

不过这可不是office控件的source,只是import的类型库.
 
cj,cAkk:
哦,尴尬了。我搞错了!
 
autumn:
我用的是5。
 
install pack dcloffice2k50.bpl //update pack 1 have
替换原来的dclaxserver50.bpl

连接access数据库用ado.
添加excelapplication,excelworkbook,excelworksheet.
source://类是这样

ExcelApplication.Connect;
// ExcelApplication1.Visible[0]:=true;
ExcelApplication.Workbooks.Add(ExtractFilePath(application.exename)+'档案模版.xlt',0);
ExcelWorkbook1.ConnectTo(ExcelApplication.Workbooks[1]);
// ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Sheets[1] as _WorkSheet);
//write the field name
{ for idx:=0 to DB.Fields.Count-1 do
ExcelWorksheet1.Cells.Item[1,idx+1]:=DB.Fields[idx].FieldName;}
recordno:=3;
PageNo:=0;
While Not Table.Eof do
begin
if recordno=3 then//the new page is start...
begin
pageno:=pageno+1;
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Sheets[excelapplication.sheets.count] as _WorkSheet);
excelworksheet1.Copy(excelworkbook1.sheets[excelapplication.sheets.count] as _worksheet);
excelworksheet1.ConnectTo(excelworkbook1.sheets[excelapplication.sheets.count-1] as _worksheet);
excelworksheet1.name:='第'+IntToStr(PageNo)+'页';
end;
for idx:=0 to Table.Fields.Count-1 do
ExcelWorksheet1.Cells.Item[recordno,idx+1]:=Table.Fields[idx].AsString;
if recordno<12 then
recordno:=recordno+1
else
recordno:=3;
Table.Next;
end;

// excelworksheet1.ConnectTo(excelworkbook1.sheets[excelapplication1.sheets.count] as _worksheet);
// excelworksheet1.Delete;

//free the excel application
ExcelWorkBook1.SaveCopyAs(SaveDialog1.FileName);
ExcelWorkBook1.Close(false);
ExcelApplication.Disconnect;
ExcelApplication.Quit;


 
后退
顶部