OfficeForm.pas
上传用户:fh681027
上传日期:2022-07-23
资源大小:1959k
文件大小:3k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit OfficeForm;
  2. interface
  3. uses
  4.   SysUtils, Windows, Messages, Classes, Graphics,
  5.   Controls, Forms, DBCtrls, StdCtrls, DBTables,
  6.   ExtCtrls, Mask, Db, Dialogs, Excel97, Word97,
  7.   OleServer, Variants;
  8. type
  9.   TFormOff = class(TForm)
  10.     DBEdit3: TDBEdit;
  11.     Label3: TLabel;
  12.     Label2: TLabel;
  13.     DBEdit2: TDBEdit;
  14.     DBEdit1: TDBEdit;
  15.     Label1: TLabel;
  16.     DBNavigator1: TDBNavigator;
  17.     Table1: TTable;
  18.     DataSource1: TDataSource;
  19.     BtnWord: TButton;
  20.     BtnExcel: TButton;
  21.     SaveDialog1: TSaveDialog;
  22.     ExcelApplication1: TExcelApplication;
  23.     WordDocument1: TWordDocument;
  24.     procedure BtnWordClick(Sender: TObject);
  25.     procedure BtnExcelClick(Sender: TObject);
  26.   end;
  27. var
  28.   FormOff: TFormOff;
  29. implementation
  30. {$R *.DFM}
  31. uses
  32.   ComObj, ActiveX;
  33. procedure TFormOff.BtnWordClick(Sender: TObject);
  34. var
  35.   Bookmark: TBookmark;
  36.   RangeW: Word97.Range;
  37.   v1: Variant;
  38.   ov1: OleVariant;
  39.   Row1: Word97.Row;
  40. begin
  41.   WordDocument1.Activate;
  42.   // insert title
  43.   WordDocument1.Range.Text := 'American Capitals from ' + Table1.TableName;
  44.   WordDocument1.Range.Font.Size := 14;
  45.   // disable the UI
  46.   Table1.DisableControls;
  47.   try
  48.     // store the current position
  49.     Bookmark := Table1.GetBookmark;
  50.     try
  51.       // scan the database table
  52.       Table1.First;
  53.       while not Table1.EOF do
  54.       begin
  55.         // send the two fields
  56.         WordDocument1.Range.InsertParagraphAfter;
  57.         WordDocument1.Paragraphs.Last.Range.Text :=
  58.           Table1.FieldByName ('Name').AsString + #9 +
  59.           Table1.FieldByName ('Capital').AsString;
  60.         Table1.Next;
  61.       end;
  62.     finally
  63.       // go back to the bookmark and destroy it
  64.       Table1.GotoBookmark (Bookmark);
  65.       Table1.FreeBookmark (Bookmark);
  66.     end;
  67.   finally
  68.     // re-enable the controls
  69.     Table1.EnableControls;
  70.   end;
  71.   RangeW := WordDocument1.Content;
  72.   v1 := RangeW;
  73.   v1.ConvertToTable (#9, 19, 2);
  74.   Row1 := WordDocument1.Tables.Item(1).Rows.Get_First;
  75.   Row1.Range.Bold := 1;
  76.   Row1.Range.Font.Size := 30;
  77.   Row1.Range.InsertParagraphAfter;
  78.   ov1 := ' ';
  79.   Row1.ConvertToText (ov1);
  80. end;
  81. procedure TFormOff.BtnExcelClick(Sender: TObject);
  82. var
  83.   RangeE: Excel97.Range;
  84.   I, Row: Integer;
  85.   Bookmark: TBookmarkStr;
  86. begin
  87.   // create and show
  88.   ExcelApplication1.Visible [0] := True;
  89.   ExcelApplication1.Workbooks.Add (NULL, 0);
  90.   // fill is the first row with field titles
  91.   RangeE := ExcelApplication1.ActiveCell;
  92.   for I := 0 to Table1.Fields.Count - 1 do
  93.   begin
  94.     RangeE.Value := Table1.Fields [I].DisplayLabel;
  95.     RangeE := RangeE.Next;
  96.   end;
  97.   // add field data in following rows
  98.   Table1.DisableControls;
  99.   try
  100.     Bookmark := Table1.Bookmark;
  101.     try
  102.       Table1.First;
  103.       Row := 2;
  104.       while not Table1.EOF do
  105.       begin
  106.         RangeE := ExcelApplication1.Range ['A' + IntToStr (Row),
  107.           'A' + IntToStr (Row)];
  108.         for I := 0 to Table1.Fields.Count - 1 do
  109.         begin
  110.           RangeE.Value := Table1.Fields [I].AsString;
  111.           RangeE := RangeE.Next;
  112.         end;
  113.         Table1.Next;
  114.         Inc (Row);
  115.       end;
  116.     finally
  117.       Table1.Bookmark := Bookmark;
  118.     end;
  119.   finally
  120.     Table1.EnableControls;
  121.   end;
  122.   // format the section
  123.   RangeE := ExcelApplication1.Range ['A1', 'E' + IntToStr (Row - 1)];
  124.   RangeE.AutoFormat (3, NULL, NULL, NULL, NULL, NULL, NULL);
  125. end;
  126. initialization
  127.   CoInitialize (nil);
  128. end.