Excel dokumentumok készítése Delphi segítségével

 

Szorzótábla

 

         Írjunk Delphi alkalmazást, mely létrehoz egy Excel munkafüzetet, és benne egy munkalapot. A program a munkalapot jelenítse meg, a munkalap A1:K11 celláiban helyezzen egy szorzótáblát, majd mentse a munkafüzetet SzorzoTBL néven, végül zárja be az Excel táblázatkezelőt.

 

         A szokásos előkészítések után, a főformon helyezzünk el két parancsgombot. Az egyik felirata legyen Szorzótábla, a másiké Kilépés. A Szorzótábla parancsgomb megnyomására a program hajtsa végre a fentebb kitűzött feladatát. Kilépés gombra a program fejeződjön be. Az Excel kapcsolat felvétele érdekében szükség van a Servers palettáról a következőkre: ExcelApplication, ExcelWorkBook és ExcelWorksheet. Helyezzünk egy-egy példányt ezekből a formunkra (én átneveztem őket: svExcelAlkalmazas, svExcelMunkafuzet és svExcelMunkalap-ra). A form szerkesztési nézetben:

 

 

         A futtatáshoz az Uses szakaszban a következő Unit-okra van szükség: ActiveX, ExcelXP, OleServer. ExcelXP helyett szükség szerint Excel2000-et kell használatba venni. Futtatás előtt ezek meglétét le kell ellenőrizni.

 

         A létrehozott Munkalap:

 

 

         A program listája:

 

unit UDESzorzoTBL;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, 

  Graphics, Controls, Forms,
  ActiveX, ExcelXP, OleServer,
  Dialogs, StdCtrls; 

type
  TfmDESorzoTBL = class(TForm)
    btSzorzoTBL: TButton;
    btKilepes: TButton;
    svExcelAlkalmazas: TExcelApplication;
    svExcelMunkafuzet: TExcelWorkbook;
    svExcelMunkalap: TExcelWorksheet;
    procedure btKilepesClick(Sender: TObject);
    procedure btSzorzoTBLClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  fmDESorzoTBL: TfmDESorzoTBL;

implementation

{$R *.dfm}

procedure TfmDESorzoTBL.btKilepesClick(Sender: TObject);
begin
  Close;
end;

procedure TfmDESorzoTBL.btSzorzoTBLClick(Sender: TObject);
Var LCID: Integer;
    Ws: String;
    I, J: Word;
begin
  //alapértelemezett mappa
  GetDir(0,Ws);
  //az excel megnyitása
  LCID:= GetUserDefaultLCID;
  With svExcelAlkalmazas Do
  Begin
    Connect;
    Visible[LCID]:= True;
    //jóváhagyás kikapcsolása
    DisplayAlerts[LCID]:= False;
    //munkafüzet létrehozása
    svExcelMunkafuzet.ConnectTo(WorkBooks.Add(TOleEnum(xlWBATWorkSheet),LCID));
  End;
  //munkalap létrehozása
  With svExcelMunkalap Do
  Begin
    ConnectTo(svExcelMunkafuzet.Worksheets[1] As _WorkSheet);
    //a lap orientációjának beállítása: fekvő
    PageSetup.Orientation:= 2;
    //a cellák töltése
    With Cells Do
    Begin
      Item[1,1].Value:= '*';
      For I:= 1 To 10 Do
      Begin
        Item[1,I+1].Value:= I;
        Item[I+1,1].Value:= I;
      End;
      For I:= 1 To 10 Do For J:= 1 To 10 Do Item[I+1,J+1]:= I*J;
    End;
    //mentés
    SaveAs(Ws+'\SzorzoTBL');
  End;
  //kapcsolat zárása
  svExcelMunkalap.Disconnect;
  svExcelMunkafuzet.Disconnect;
  svExcelAlkalmazas.Quit;
  svExcelAlkalmazas.Disconnect;
end;

end.

 

Órarend

 

         Készítsünk Delphi alkalmazást, mely egy órarendet hoz létre egy Excel munkalapon. Az Órarend feliratot kövér betűkkel írja és helyezze az A1:F1 egyesített cellák közepére, a napok nevét, az órák sorszámát igazítsa középre, és kövéren jelenítse meg. Az 1.-6. órák háttérszíne legyen zöld. Keresse meg az órarendben a Matek órákat, és ezeket fehérre írja át.

 

         A kezdő lépéseket a Szorzótábla programhoz hasonlóan hajtsuk végre. A form szerkesztő nézetben ugyanaz most is, csak a parancsgomb felirata Órarend. A részfeladatok megoldásra a listában megjegyzések utalnak.

 

         A létlehozott Excel munkalap:

 

 

         A program listája:

 

unit UDEOrarend;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, 

  Graphics, Controls, Forms,
  ActiveX, ExcelXP, OleServer,
  Dialogs, StdCtrls;

type
  TfmDEOrarend = class(TForm)
    btOrarend: TButton;
    btKilepes: TButton;
    svExcelAlkalmazas: TExcelApplication;
    svExcelMunkafuzet: TExcelWorkbook;
    svExcelMunkalap: TExcelWorksheet;
    procedure btKilepesClick(Sender: TObject);
    procedure btOrarendClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  fmDEOrarend: TfmDEOrarend;

Const Nap: Array[1..5] Of String=('Hétfő','Kedd','Szerda','Csütörtök','Péntek');
      Ora: Array[1..5,1..7] Of String=
           (('Angol','Ének','Biosz','Matek','Tesi','Magyar','-'),
            ('Földrajz','Kémia','Német','Rajz','Magyar','Fizika','Ofő'),
            ('Matek','Tesi','Angol','Német','Info','Info','-'),
            ('Magyar','Angol','Földrajz','Matek','Kémia','Tesi','-'),
            ('Német','Magyar','Fizika','Matek','Biosz','Magyar','-'));
implementation

{$R *.dfm}

procedure TfmDEOrarend.btKilepesClick(Sender: TObject);
begin
  Close;
end;

procedure TfmDEOrarend.btOrarendClick(Sender: TObject);
Var LCID: Integer;
    Ws: String;
    I, J: Word;
begin
  //alapértelemezett mappa
  GetDir(0,Ws);
  //az excel megnyitása
  LCID:= GetUserDefaultLCID;
  With svExcelAlkalmazas Do
  Begin
    Connect;
    Visible[LCID]:= True;
    //jóváhagyás kikapcsolása
    DisplayAlerts[LCID]:= False;
    //munkafüzet létrehozása
    svExcelMunkafuzet.ConnectTo(WorkBooks.Add(TOleEnum(xlWBATWorkSheet),LCID));
  End;
  //munkalap létrehozása
  With svExcelMunkalap Do
  Begin
    ConnectTo(svExcelMunkafuzet.Worksheets[1] As _WorkSheet);
    //a lap orientációjának beállítása: álló
    PageSetup.Orientation:= 1;
    //az óraszámokat tartalmazó cellák előformázása
    With Range['A3','A9'] Do
    Begin
      Select;
      NumberFormat:='@';                    //a szám szövegként kezelhető
    End;
    //a cellák töltése
    With Cells Do
    Begin
      Item[1,1].Value:= 'Órarend';
      Item[2,1].Value:= 'Nap/óra';
      For I:= 1 To 5 Do Item[2,I+1].Value:= Nap[I];
      For I:= 1 To 7 Do Item[I+2,1].Value:= IntToStr(I)+'.';
      For I:= 1 To 5 Do For J:= 1 To 7 Do
      Item[J+2,I+1].Value:= Ora[I,J];
    End;
    //a cellák utólagos formázása
    Range['A1','F9'].Font.Size:= 16;        //betűméret
    Range['A1','F1'].MergeCells:= True;     //cellaösszevonás
    With Range['A1','F2'] Do
    Begin
      Select;
      Font.Bold:= True;                     //félkövér karakterek
      HorizontalAlignment:= xlHAlignCenter; //vízszintesen középre igazítás
    End;
    With Range['A3','A9'] Do
    Begin
      Select;
      Font.Bold:= True;                     //félkövér karakterek
      HorizontalAlignment:= xlHAlignCenter; //vízszintesen középre igazítás
    End;
    With Range['A1','F9'] Do
    Begin
      Select;
      Borders.LineStyle:= xlContinuous;       //keretek
    End;
    Range['A3','F8'].Interior.Color:= clLime; //kitöltőszín
    With Cells Do
    For I:= 1 To 5 Do For J:= 1 To 7 Do
    If Item[J+2,I+1].Value='Matek' Then
    Item[J+2,I+1].Font.ColorIndex:= 2;   //karakterszín színindex segítségével
    Cells.EntireColumn.AutoFit;          //automatikus cellaszélesség
    Range['G1','G1'].Select;
    //mentés
    SaveAs(Ws+'\Orarend');
  End;
  //kapcsolat zárása
  svExcelMunkalap.Disconnect;
  svExcelMunkafuzet.Disconnect;
  svExcelAlkalmazas.Quit;
  svExcelAlkalmazas.Disconnect;
end;

end.

 

Oktatási naptár

 

         Készítsünk Delphi alkalmazást, mely naptárt hoz létre Excel munkalapon. A naptár egy teljes oktatási évet tartalmazzon, az első napja augusztus 1, az utolsó július 31 legyen. Bemeneti táblákon lehessen beállítani a tanév rendjét meghatározó dátumokat, melyet szöveges állományként tároljon. Jelölje nagyobb karaktermérettel és félkövér beállítással a tanítási napokat. Számolja össze és jelenítse meg azt is, hogy a hány tanítási nap esik a hét egyes napjaira és azt, hogy a tanítási napok száma összesen mennyi.

 

         A szükséges VCL elemek:

 

 

         A főform tervező nézetben:

 

 

 

         A Naptar.txt tartalma:

 

 

         A program futási képe:

 

 

         Program által előállított naptár:

 

 

         A program listája:

 

unit UDENaptar;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes,

  Graphics, Controls, Forms,
  ActiveX, Excel2000, OleServer,
  Dialogs, StdCtrls, Grids, ExcelXP;

type
  TfmDENaptar = class(TForm)
    lbIdopontok: TLabel;
    sgTanNapok: TStringGrid;
    sgUnnepnapok: TStringGrid;
    sgMunkanapok: TStringGrid;
    sgRendkivuli: TStringGrid;
    btNaptar: TButton;
    btKilepes: TButton;
    svExcelAlkalmazas: TExcelApplication;
    svExcelMunkafuzet: TExcelWorkbook;
    svExcelMunkalap: TExcelWorksheet;
    Procedure NaptarTolt;
    Procedure Lemezrol;
    Procedure Lemezre;
    procedure btKilepesClick(Sender: TObject);
    procedure btNaptarClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  St2=String[2];
  St6=String[6];

  TNap=Record
    Dat: St6;
    Tan: Boolean;
  End;

var
  fmDENaptar: TfmDENaptar;
  Datum: Array[1..24] Of St6;
  DNev: String;
  FText: Text;
  Naptar: Array[1..366] Of TNap;
  HoNSz: Array[1..12] Of Word;
  Ev1, Ev2, ANap, BOsz, AHet, NapI: Word;
  TN: Array[1..7] Of Word;

Const Ho: Array[1..12] Of String=('Január','Február','Március','Április',
                                  'Május','Június','Július','Augusztus',
                                  'Szeptember','Október','November','December');
      HoH: Array[1..12] Of Word=(31,28,31,30,31,30,31,31,30,31,30,31);
      Nap='HKSCPSV';

implementation

{$R *.dfm}

Function SzokoEv(Ev: Word): Boolean;
Begin
  SzokoEv:= (Ev Mod 4 = 0) And (Ev Mod 100 <> 0) Or (Ev Mod 400 = 0);
End;

Function NapNev(E, H, N: Word): Word;
Var DT: TDateTime;
    P: Word;
Begin
  DT:= StrToDate(IntToStr(E)+'.'+IntToStr(H)+'.'+IntToStr(N)+'.');
  P:= DayOfWeek(DT)-1; If P=0 Then P:= 7; NapNev:= P;
End;

Function DateToIndex(D: St6): Word;
Var I: Word;
Begin
  DateToIndex:= 0;
  For I:= 1 To 366 Do If Naptar[I].Dat=D Then
  Begin DateToIndex:= I; Break End;
End;

Procedure TfmDENaptar.NaptarTolt;
Var I, J, K: Word;
    W1, W2: St2;
Begin
  Ev1:= StrToInt(Copy(DateTimeToStr(Now),1,4));
  If StrToInt(Copy(DateTimeToStr(Now),6,2))<8 Then Dec(Ev1);
  Ev2:= Ev1+1;
  For I:= 1 To 12 Do HoNSz[I]:= HoH[I];
  If SzokoEv(Ev2) Then HoNSz[2]:= 29;
  NapI:= 1;
  For I:= 8 To 12 Do For J:= 1 To HoNsz[I] Do
  Begin
    W1:= IntToStr(I); If I<10 Then W1:= '0'+W1;
    W2:= IntToStr(J); If J<10 Then W2:= '0'+W2;
    Naptar[NapI].Dat:= W1+'.'+W2+'.';
    Inc(NapI);
  End;
  For I:= 1 To 7 Do For J:= 1 To HoNsz[I] Do
  Begin
    W1:= IntToStr(I); If I<10 Then W1:= '0'+W1;
    W2:= IntToStr(J); If J<10 Then W2:= '0'+W2;
    Naptar[NapI].Dat:= W1+'.'+W2+'.';
    Inc(NapI);
  End;
  For I:= 1 To 366 Do Naptar[I].Tan:= False;
  For I:= 1 To 4 Do
  For J:= DateToIndex(Datum[2*I-1]) To DateToIndex(Datum[2*I]) Do
  Naptar[J].Tan:= True;
  For I:= 1 To DateToIndex('12.31.') Do With Naptar[I] Do
  If NapNev(Ev1,StrToInt(Copy(Dat,1,2)),StrToInt(Copy(Dat,4,2)))>5 Then
  Tan:= False;
  For I:= DateToIndex('01.01.') To DateToIndex('07.31.') Do With Naptar[I] Do
  If NapNev(Ev2,StrToInt(Copy(Dat,1,2)),StrToInt(Copy(Dat,4,2)))>5 Then
  Tan:= False;
  For I:= 9 To 19 Do Naptar[DateToIndex(Datum[I])].Tan:= False;
  For I:= 20 To 24 Do Naptar[DateToIndex(Datum[I])].Tan:= True;
  For I:= 1 To 7 Do TN[I]:= 0;
  J:= NapNev(Ev1,8,1); K:= 365; If SzokoEv(Ev2) Then K:= 366;
  For I:= 1 To K Do
  Begin
    If Naptar[I].Tan Then Inc(TN[J]);
    Inc(J); If J>7 Then J:= 1;
  End;
End;

Procedure TfmDENaptar.Lemezrol;
Var I, J: Word;
    Ws: St6;
Begin
  AssignFile(FText,DNev); {$I-}Reset(FText);{$I+}
    If IOResult<>0 Then ReWrite(FText) Else
    Begin
      J:= 1;
      With sgTanNapok Do For I:= 1 To 8 Do
      Begin ReadLn(FText,Ws); Cells[1,I]:= Ws; Datum[J]:= Ws; Inc(J) End;
      With sgUnnepnapok Do For I:= 1 To 6 Do
      Begin ReadLn(FText,Ws); Cells[1,I]:= Ws; Datum[J]:= Ws; Inc(J) End;
      With sgMunkanapok Do For I:= 1 To 5 Do
      Begin ReadLn(FText,Ws); Cells[1,I]:= Ws; Datum[J]:= Ws; Inc(J) End;
      With sgRendkivuli Do For I:= 1 To 5 Do
      Begin ReadLn(FText,Ws); Cells[1,I]:= Ws; Datum[J]:= Ws; Inc(J) End;
    End;
  CloseFile(FText);
End;

Procedure TfmDENaptar.Lemezre;
Var I: Word;
Begin
  AssignFile(FText,DNev); ReWrite(FText);
    For I:= 1 To 8 Do WriteLn(FText,sgTanNapok.Cells[1,I]);
    For I:= 1 To 6 Do WriteLn(FText,sgUnnepnapok.Cells[1,I]);
    For I:= 1 To 5 Do WriteLn(FText,sgMunkanapok.Cells[1,I]);
    For I:= 1 To 5 Do WriteLn(FText,sgRendkivuli.Cells[1,I]);
  CloseFile(FText);
End;

procedure TfmDENaptar.btKilepesClick(Sender: TObject);
begin
  Lemezre;
  Close;
end;

procedure TfmDENaptar.FormCreate(Sender: TObject);
begin
  With sgTanNapok Do
  Begin
    ColWidths[1]:= 64;
    Cells[0,0]:= 'Tanítási napok';
    Cells[1,0]:= 'Dátum:';
    Cells[0,1]:= 'A tanév első,';
    Cells[0,2]:= 'az őszi szünet előtti utolsó,';
    Cells[0,3]:= 'az őszi szünet utáni első,';
    Cells[0,4]:= 'a téli szünet előtti utolsó,';
    Cells[0,5]:= 'a téli szünet utáni első,';
    Cells[0,6]:= 'a tavaszi szünet előtti utolsó,';
    Cells[0,7]:= 'a tavaszi szünet utáni első,';
    Cells[0,8]:= 'a tanév utolsó tanítási napja:';
  End;
  With sgUnnepnapok Do
  Begin
    ColWidths[1]:= 64;
    Cells[0,0]:= 'Ünnepnapok';
    Cells[1,0]:= 'Dátum:';
    Cells[0,1]:= 'Október 23., Nemzeti ünnep';
    Cells[0,2]:= 'Mindenszentek';
    Cells[0,3]:= 'Március 15., Nemzeti ünnep';
    Cells[0,4]:= 'A munka ünnepe';
    Cells[0,5]:= 'Húsvét hétfő';
    Cells[0,6]:= 'Pünkösd hétfő';
  End;
  With sgMunkanapok Do
  Begin
    ColWidths[1]:= 64;
    Cells[0,0]:= 'Tanítás nélküli munkanapok';
    Cells[1,0]:= 'Dátum:';
    Cells[0,1]:= 'Az írásbeli érettségi 1. napja';
    Cells[0,2]:= 'Az írásbeli érettségi 2. napja';
    Cells[0,3]:= 'Az írásbeli érettségi 3. napja';
    Cells[0,4]:= '1. igazgatói tanítási szünet';
    Cells[0,5]:= '2. igazgatói tanítási szünet';
  End;
  With sgRendkivuli Do
  Begin
    ColWidths[1]:= 64;
    Cells[0,0]:= 'Rendkívüli tanítási napok';
    Cells[1,0]:= 'Dátum:';
    Cells[0,1]:= '1.';
    Cells[0,2]:= '2.';
    Cells[0,3]:= '3.';
    Cells[0,4]:= '4.';
    Cells[0,5]:= '5.';
  End;
  DNev:= 'Naptar.txt';
  Lemezrol;
  NaptarTolt;
end;

procedure TfmDENaptar.btNaptarClick(Sender: TObject);
Var LCID: Integer;
    Ws: String;
    I, J, K: Word;
    Tart: OleVariant;
begin
  J:= 1;
  For I:= 1 To 8 Do Begin Datum[J]:= sgTanNapok.Cells[1,I]; Inc(J) End;
  For I:= 1 To 6 Do Begin Datum[J]:= sgUnnepnapok.Cells[1,I]; Inc(J) End;
  For I:= 1 To 5 Do Begin Datum[J]:= sgMunkanapok.Cells[1,I]; Inc(J) End;
  For I:= 1 To 5 Do Begin Datum[J]:= sgRendkivuli.Cells[1,I]; Inc(J) End;
  GetDir(0,Ws);
  LCID:= GetUserDefaultLCID;
  With svExcelAlkalmazas Do
  Begin
    Connect;
    Visible[LCID]:= True;
    DisplayAlerts[LCID]:= False;
    svExcelMunkafuzet.ConnectTo(WorkBooks.Add(TOleEnum(xlWBATWorkSheet),LCID));
  End;
  With svExcelMunkalap Do
  Begin
    ConnectTo(svExcelMunkafuzet.Worksheets[1] As _WorkSheet);
    PageSetup.Orientation:= 2;
    With Cells Do
    Begin
      For I:= 1 To 3 Do For J:= 1 To 4 Do For K:= 1 To 7 Do
      Begin
        Item[(I-1)*8+K-1+2,(J-1)*7+1].Value:= Nap[K];
        Item[(I-1)*8+K-1+2,(J-1)*7+1].Font.Bold:= True;
        Item[(I-1)*8+K-1+2,(J-1)*7+1].Font.Size:= 14;
      End;
      Item[1,1].Value:= IntToStr(Ev1)+'. '+Ho[8];
      For I:= 9 To 11 Do Item[1,(I-8)*7+1].Value:= Ho[I];
      Item[9,1].Value:= Ho[12];
      Item[9,8].Value:= IntToStr(Ev2)+'. '+Ho[1];
      For I:= 2 To 3 Do Item[9,(I-1)*7+8].Value:= Ho[I];
      For I:= 4 To 7 Do Item[17,(I-4)*7+1].Value:= Ho[I];

      ANap:= NapNev(Ev1,8,1); NapI:= 1;

      BOsz:= 2;
      For I:= 8 To 11 Do
      Begin
        AHet:= 0;
        For J:= 1 To HoNSz[I] Do
        Begin
          Item[ANap+1,BOSz+AHet].Value:= J;
          If Naptar[NapI].Tan Then
          Begin
            Item[ANap+1,BOSz+AHet].Font.Bold:= True;
            Item[ANap+1,BOSz+AHet].Font.Size:= 14;
          End;
          Inc(NapI);
          Inc(ANap);
          If ANap=8 Then Begin ANap:= 1; Inc(AHet) End;
        End;
        Inc(BOsz,7);
      End;

      BOsz:= 2;
      AHet:= 0;
      For J:= 1 To HoNSz[12] Do
      Begin
        Item[ANap+9,BOSz+AHet].Value:= J;
        If Naptar[NapI].Tan Then
        Begin
          Item[ANap+9,BOSz+AHet].Font.Bold:= True;
          Item[ANap+9,BOSz+AHet].Font.Size:= 14;
        End;
        Inc(NapI);
        Inc(ANap);
        If ANap=8 Then Begin ANap:= 1; Inc(AHet) End;
      End;

      BOsz:= 9;
      For I:= 1 To 3 Do
      Begin
        AHet:= 0;
        For J:= 1 To HoNSz[I] Do
        Begin
          Item[ANap+9,BOSz+AHet].Value:= J;
          If Naptar[NapI].Tan Then
          Begin
            Item[ANap+9,BOSz+AHet].Font.Bold:= True;
            Item[ANap+9,BOSz+AHet].Font.Size:= 14;
          End;
          Inc(NapI);
          Inc(ANap);
          If ANap=8 Then Begin ANap:= 1; Inc(AHet) End;
        End;
        Inc(BOsz,7);
      End;

      BOsz:= 2;
      For I:= 4 To 7 Do
      Begin
        AHet:= 0;
        For J:= 1 To HoNSz[I] Do
        Begin
          Item[ANap+17,BOSz+AHet].Value:= J;
          If Naptar[NapI].Tan Then
          Begin
            Item[ANap+17,BOSz+AHet].Font.Bold:= True;
            Item[ANap+17,BOSz+AHet].Font.Size:= 14;
          End;
          Inc(NapI);
          Inc(ANap);
          If ANap=8 Then Begin ANap:= 1; Inc(AHet) End;
        End;
        Inc(BOsz,7);
      End;
    End;

    For I:= 1 To 3 Do
    With Range['A'+IntToStr((I-1)*8+1),'AB'+IntToStr((I-1)*8+1)] Do
    Begin
      Select;
      Font.Bold:= True;
      Font.Size:= 14;
      HorizontalAlignment:= xlHAlignCenter;
    End;
    For I:= 1 To 3 Do
    Begin
      Range['A'+IntToStr((I-1)*8+1),'G'+IntToStr((I-1)*8+1)].MergeCells:= True;
      Range['H'+IntToStr((I-1)*8+1),'N'+IntToStr((I-1)*8+1)].MergeCells:= True;
      Range['O'+IntToStr((I-1)*8+1),'U'+IntToStr((I-1)*8+1)].MergeCells:= True;
      Range['V'+IntToStr((I-1)*8+1),'AB'+IntToStr((I-1)*8+1)].MergeCells:= True;
    End;
    With Cells Do
    Begin
      Range['A1','AB1'].ColumnWidth:= 3.43;
      J:= 0;
      For I:= 1 To 7 Do
      Begin
        Item[I+1,29]:= Nap[I]+': '+IntToStr(TN[I]);
        Inc(J,TN[I]);
      End;
      Item[9,29]:= 'Össz: '+IntToStr(J);
      For I:=1 To 2 Do
      Begin Tart:= Range['A1','AC1']; Tart.Select; Tart.Rows[1].Insert End;
      Range['A1','AB1'].MergeCells:= True;
      Item[1,1].Font.Size:= 18;
      Item[1,1].Font.Bold:= True;
      Item[1,1].Font.Underline:= True;
      Item[1,1].HorizontalAlignment:= xlHAlignCenter;
      Item[1,1].Value:= 'Naptár: '+IntToStr(Ev1)+'-'+IntToStr(Ev2)+'.';
      With Range['A3','AB26'] Do
      Begin
        Select;
        Borders.LineStyle:= xlContinuous;
      End;
      Range['AC1','AC1'].Select;
    End;
    SaveAs(Ws+'\Naptar');
  End;
  svExcelMunkalap.Disconnect;
  svExcelMunkafuzet.Disconnect;
  svExcelAlkalmazas.Quit;
  svExcelAlkalmazas.Disconnect;
end;

end.