|
|
|
|
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;
|
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!
|