怎么在delphi中启动Word和Excel??(100分)

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

awater

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾请指点...
1,我想在DELPHI中创建一个新的WORD文档,该怎么做??
2,我如何将DELPHI中的数据导入到EXCEL中处理??


 
1.用Server的WordApplication控件.
2.用ExcelApplication控件.
 
同意CJF,得说法,不过我习惯用手工创建COM接口
 
用SERVER中的这两个控件具体的代码怎么写啊,望告知!!急不甚感激!!
 
server种的两个控件只能起到一般的开关作用,你可以看看delphi附增的demo
用法很间的,只要connect,在激活就行了。你可以看看林金霖写的一本书《delphi 5
事务经典〉〉绝对超值
 
关于的SERVER用法是那个DEMOS啊??望告知不甚感激!!
 
try
wordapplication1.Connect ;
wordapplication1.Visible :=true;
except
application.messagebox(pchar('初始化错误或没有安装word。'),'错误',mb_iconerror+mb_ok)
wordapplication1.free;
end;
 
var vExcelapp:Variant;
...
vExcelApp := CreateOleObject('Excel.Application');
vExcelApp.Workbooks.Add;//也可以vExcelApp.Workbooks.Open一个已存在的文件
vExcelApp.Workbooks[1].Sheets[1].Cells[1, 1] := 'AAA';//第一个单元格
 
>>关于的SERVER用法是那个DEMOS啊??
在/../Delphi5/Demos/Activex/Oleauto下有你需要的例子
 
留个email
我发个例子给你
 
//连接excel
procedure TForm1.btnExcelConClick(Sender: TObject);
begin
btnAddData.Enabled:=true;
btnDiscon.Enabled:=true;
lcid:=getuserdefaultlcid();
excelapplication1.Connect;
excelapplication1.visible[lcid]:=true;
workbook1:=excelapplication1.workbooks.add(emptyparam,lcid);
end;
//断开连接

procedure TForm1.btnDisconClick(Sender: TObject);
begin
btnAddData.enabled:=false;
btnExcelCon.enabled:=false;
excelapplication1.activeworkbook.close(false,emptyparam,emptyparam,0);
excelapplication1.quit;
excelapplication1.disconnect;
end;
//把数据加入到excel中
procedure TForm1.btnAddDataClick(Sender: TObject);
var
ws :olevariant;
i,j :integer;
s1 :variant;
begin
btnAddData.enabled:=false;
ws:= excelapplication1.activesheet as _worksheet;
ws.cells.item[2,2]:='EmpId';
ws.cells.item[2,3]:='EDptId';
ws.cells.item[2,4]:='EmpNo';
ws.cells.item[2,5]:='EmpCardNo';
ws.cells.item[2,6]:='EmpName';
ws.cells.item[2,7]:='EmpSex';
ws.cells.item[2,8]:='DDptId';
ws.cells.item[2,9]:='DptNo';
ws.cells.item[2,10]:='DptName';
ws.cells.item[2,11]:='CardId';

ws.range['a2:h2'].entirecolumn.horizontalalignment:= xlcenter;


IF query1.FindFirst then
begin
i:=0;
with dbgrid1.datasource.dataset do
while not query1.Eof do
begin
// gotobookmark(pointer(dbgrid1.items));
for j:=0 to fieldcount-1 do
begin
if (j>=0) then
s1:=fields[j].value;
ws.cells.item[i+3,j+2]:=s1;
end;
query1.Next;
i:=i+1;
end;
end;
end;
 
接受答案了.
 
后退
顶部