unit UMain;interfaceuses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, DBTables, StdCtrls, Grids, DBGrids,Excel97,Comctrls,OleCtnrs,ComObj;type
  TForm1 = class(TForm)
    DBGrid1: TDBGrid;
    Button1: TButton;
    Button2: TButton;
    DataSource1: TDataSource;
    Table1: TTable;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    XlsApp,XlsSheet,XlsWBk : Variant;
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
var
  I,J : integer;
begin
  if VarIsEmpty(XlsApp) then
    XlsApp := CreateOleObject('Excel.Application');  XLsApp.Workbooks.Add;
  XlsSheet := XLsApp.Worksheets['Sheet1'];  for I := 0 to Table1.Fields.Count - 1 do
  begin
    XlsSheet.Cells[3,I + 1] := dbgrid1.Columns[I].Title.Caption;
  end;  Table1.first;
  for J := 0 to Table1.RecordCount - 1 do
  begin
    for I := 0 to Table1.Fields.Count - 1 do
    begin
      XlsSheet.Cells[J + 4,I + 1] := Table1.Fields[I].AsString;
    end;
    Table1.Next;
  end;  XlsApp.Visible := true;
end;procedure TForm1.Button2Click(Sender: TObject);
var
  I,J : integer;
  TxtFile : TextFile;
  TmpString : String;
begin
  try
    if VarIsEmpty(XlsApp) then
      XlsApp := CreateOleObject('Excel.Application');
    XlsSheet := XlsApp.workbooks.open('c:\my documents\book3.xls');    AssignFile(TxtFile,'C:\My Documents\Test.txt');
    Rewrite(TxtFile);
    try
      for I := 3 to 21 do
      begin
        TmpString := '';
        for J := 1 to 5 do
        begin
          TmpString := TmpString + XlsSheet.ActiveSheet.Cells[I,J].Text + '¦';
        end;
        Writeln(TxtFile,Tmpstring);
      end;
    finally
      CloseFile(TxtFile);
    end;
    XlsApp.Visible := true;
  except
    XlsSheet.close;
    XlsApp.Application.quit;
    XlsApp := Unassigned;
    XlsSheet := Unassigned;
  end;
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if not VarIsEmpty(XlsApp) then
  begin
    XlsApp.DisplayAlerts := True;  // 7Discard unsaved files....
    try
      XlsApp.Application.Quit;
    except
    end;
  end;
end;end.

解决方案 »

  1.   

    对象太麻烦了,刚刚学DELPHI语法还不是太了解,请教我用控件
      

  2.   

    再加10分,各位大侠难道WordApplication控件都没有用过吗?我要的不是对象编程,是控件的用法。各位拜托了!
      

  3.   

    启动word时用如下代码: 
    begin
    try 
    wordapplication.connect; 
    except 
    messagedlg('word may not be installed', mterror, [mbok], 0); 
    abort; 
    end; 
    wordapplication.visible := true; 
    wordapplication.caption := 'delphi automation'; 
    end; 关闭word用如下代码。如果想保存doc文件,请修改savechanges变量的内容: 
    var 
    savechanges, originalformat, routedocument: olevariant; 
    begin 
    savechanges := wddonotsavechanges; 
    originalformat := unassigned; 
    routedocument := unassigned; 
    try 
    wordapplication.quit(savechanges, originalformat, routedocument); 
    wordapplication.disconnect; 
    except 
    on e: exception do 
    begin 
    showmessage(e.message); 
    wordapplication.disconnect; 
    end; 
    end; 
    end; 让word打开一个指定的文件,需要先放置opendialog,然后调用wordapplication.documents.open: 
    var 
    itemindex :olevariant; 
    filename, confirmconversions, readonly, addtorecentfiles, 
    passworddocument, passwordtemplate, revert, 
    writepassworddocument, writepasswordtemplate, format: olevariant; 
    begin 
    if not dlgopen.execute then 
    exit; {open document} 
    filename := dlgopen.filename; 
    confirmconversions := false; 
    readonly := false; 
    addtorecentfiles := false; 
    passworddocument := ''; 
    passwordtemplate := ''; 
    revert := true; 
    writepassworddocument := ''; 
    writepasswordtemplate := ''; 
    format := wdopenformatdocument; wordapplication.documents.open( filename, confirmconversions, 
    readonly, addtorecentfiles, passworddocument, passwordtemplate, 
    revert, writepassworddocument, writepasswordtemplate, format ); {assign worddocument component} 
    itemindex := 1; 
    worddocument.connectto(wordapplication.documents.item(itemindex)); {turn spell checking of because it takes a long time if enabled and slows down winword} 
    wordapplication.options.checkspellingasyoutype := false; 
    wordapplication.options.checkgrammarasyoutype := false; 
    end;  
     
     
      

  4.   

    对了~~打开指定Word文件哪里最后需要在增加一句  wordapplication1.Visible := True; 要不然打开了是看不到的~呵呵~~
      

  5.   

    tikkypeng(一两狂死郎之天衣有缝) :调试通过,但是WORD2000的却不能调用,为什么?