HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Exportálás Excel-be


Példaprogram letöltése

11548 bájt

A példaprogram megmutat egy lehetőséget arra, hogy hogyan lehet egyszerűen dBase, vagy bármilyen más formátumú adatbázis táblát Excel-be exportálni a TExcelApplication komponens segítségével, melyet a Delphi 5-ös verziójában a Servers palettán találunk, így e verziótól kezdve már komponens formájában is felhasználhatunk egy Excel-t, vagy egyéb Office alkalmazást.
A példaprogram futtatásához nem kell BDE Alias-t létrehozni.

Első lépésben létrehozunk egy új munkalapot, és eldöntjük, hogy a konvertálás közben látni szeretnénk-e az Excel-t, vagy sem:
    ExcelApplication1.Visible[0]:=CheckBox1.Checked;
    ExcelApplication1.Workbooks.Add(integer(xlWBATWorksheet), 0);
Ha megnyitottuk az új munkafüzetet, akkor beállítjuk az oszlopok fejléceit:
    ExcelApplication1.Range['A1','C1'].Font.Bold:=True;
    ExcelApplication1.Range['A1','A1'].ColumnWidth:=10;
    ExcelApplication1.Range['A1','A1'].Value:=Table1.FieldDefs[0].Name;
    ExcelApplication1.Range['B1','B1'].ColumnWidth:=60;
    ExcelApplication1.Range['B1','B1'].Value:=Table1.FieldDefs[1].Name;
    ExcelApplication1.Range['C1','C1'].ColumnWidth:=10;
    ExcelApplication1.Range['C1','C1'].Value:=Table1.FieldDefs[2].Name;
    ExcelApplication1.Range['C1','C1'].HorizontalAlignment:=
        integer(xlHAlignCenter);    
Most következhet a rekordok exportálása:
    with Table1 do
    begin
    ExcelApplication1.Range['A1','A'+IntToStr(RecordCount+
      1)].HorizontalAlignment:=integer(xlHAlignCenter);
    ExcelApplication1.Range['B1','B'+IntToStr(RecordCount+
      1)].HorizontalAlignment:=integer(xlHAlignLeft);
    ExcelApplication1.Range['C2','C'+IntToStr(RecordCount+
      1)].HorizontalAlignment:=integer(xlHAlignRight);

    First;
    ProgressBar1.Max:=RecordCount;
    ProgressBar1.Position:=0;

    r:=2;

    while not EOF do
    begin
        ExcelApplication1.Range['A'+IntToStr(r), 'A'+IntToStr(r)].
          Value:=Table1.Fields[0].Value;
        ExcelApplication1.Range['B'+IntToStr(r), 'B'+IntToStr(r)].
          Value:=Table1.Fields[1].Value;
        ExcelApplication1.Range['C'+IntToStr(r), 'C'+IntToStr(r)].
          Value:=Table1.Fields[2].Value;
        inc(r);        
        ProgressBar1.StepIt;
        Next;
    end;
    end;

A rekordok exportálása után elmentjük az Excel táblát. Ehhez az TExcelApplication osztály ActiveWorkBook.SaveAs metódusát használjuk, aminek igen sok paramétere van:
- FileName: az Excel fájl neve. Ha a fájlnév nem tartalmazza az elérési útvonalat, úgy az aktuális könyvtárba menti.
- FileFormat: a fájl formátumát határozza meg, melyet a következő konstansokkal lehet megadni:
xlAddIn  xlCSV  xlCSVMac  xlCSVMSDOS
xlCSVWindows  xlDBF2  xlDBF3  xlDBF4
xlDIF  xlExcel2  xlExcel2FarEast  xlExcel3
xlExcel4  xlExcel5  xlExcel4  Workbook
xlIntlAddIn  xlIntlMacro  xlWorkbookNormal  xlSYLK
xlTemplate  xlCurrentPlatformText  xlTextMac  xlTextMSDOS
xlTextPrinter  xlTextWindows  xlWJ2WD1  xlWK1
xlWK1ALL  xlWK1FMT  xlWK3  xlWK4
xlWK3FM3  xlWKS  xlWorks2FarEast  xlWQ1
xlWJ3  xlWJ3FJ3    


- Password és WriteResPassword: a Password a fájl megnyitásához szükséges, a WriteResPassword pedig a módosításához.
- ReadOnlyRecommended: logikai típusú paraméter. Ha igaz (True), akkor a fájl megnyitásakor az Excel figyelmeztet, hogy a fájlt ajánlatos Read-Only (csak olvasható) módban megnyitni.
- CreateBackup: logikai típusú paraméter, amely meghatározza, hogy a fájlról készüljön-e biztonsági másolat.
- AccessMode: a fájlhoz való hozzáférés mikéntjét határozza meg. Értékei a következők lehetnek:
xlShared - megosztott, vagy egyszerre többen is használhatják;
xlExclusive - csak egy példányban lehet megnyitni;
xlNoChange - nem változtatjuk meg a hozzáférést (vagyis az eredeti fájlban tárolt érték marad);
- ConflictResolution: meghatározza, hogy megosztott munkafüzet esetén hogyan kezelje az ütközéseket:
xlUserResolution - megjelenít egy dialógus ablakot
xlLocalSessionChanges - automatikusan a helyi felhasználó beállításait veszi figyelembe
xlOtherSessionChanges - figyelmen kívül hagyja a felhasználó beállításait
- AddToMru: logikai típusú paraméter. Ha igaz (True), akkor a fájl felkerül az utoljára használt fájlok listájára, amely az Excel Fájl menüjében található.
- TextCodePage: nincs info.
- TextVisualLayout: nincs info.
    try
        ExcelApplication1.ActiveWorkbook.SaveAs(
            ChangeFileExt(Table1.TableName, '.xls'),
            xlExcel5,
            '',
            '',
            false,
            false,
            xlNoChange,
            xlUserResolution,
            false,
            0,
            0,
            0);
    except
        on EOleException do ShowMessage('A fájl 
            mentése nem történt meg!');
    end;
Ha az exportálást a "háttérben" végeztük, akkor lezárjuk a fájlt. Ellenkező esetben ezt a felhasználónak kell megtennie.
    if not CheckBox1.Checked then 
      ExcelApplication1.Workbooks.Close(0);
Végül megszakítjuk a kapcsolatot ez Excel-lel:
    ExcelApplication1.Disconnect;


Cikksorozat

#IDKategóriaCikk címeSorozat
3333WindowsNet Shell parancsok1. rész
3367WindowsNet Shell parancsok2. rész
3396WindowsNet Shell parancsok3. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2001 évkönyv 227. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |