Olvassa excel fájl (xls) Delphi
Írásban üzleti alkalmazásokat Delphi, illetve minden számítás, akkor lehet importálni (export) adatfájlok más alkalmazásokban. Az egyik fő alkalmazások, mint - MS Excel. Hogyan kell olvasni faylyxls vDelphi most úgy!?
Hozzon létre egy új projektet, és helyezze formájában három részből áll:
StringGrid - van az alkatrészen palettán a kiegészítő lap
Gomb gomb könnyű és gyors kiválasztását fájlok fájlmegnyitási párbeszédablak (munka dialógusok leírása itt).
Mert StringGrid. A tulajdonságok (Properties), adja meg az alábbiakat:
DefaultRowHeight - 17
FixedCols - 0
FixedRows - 0
Ennek eredményeként a forma fog kinézni:
Ennél a díszítés kivitelben és írjuk kódot.
Együttműködik Excel fájlokat, meg kell ComObj könyvtár része a szállítási Delphi. Csatlakoztassa a felhasználási szakaszban. Add a végén, a vessző után «ComObj».
Most ismertesse az eljárást Xls_Open a kulcsszó után végrehajtására:
eljárás Xls_Open (XLSFile: string; Grid: TStringGrid);
const
xlCellTypeLastCell = $ 0000000B;
var
ExlApp, lemez: OLEVariant;
i, j, R, C: integer;
kezdődik
// Létrehozunk egy Excel objektumot
ExlApp: = CreateOleObject ( 'Excel.Application');
// teszi Excel láthatatlan ablakban
ExlApp.Visible: = false;
// fájl megnyitása XLSFile
ExlApp.Workbooks.Open (XLSFile);
// létrehozni Sheet objektum (oldal), és adja meg a számot a lap (1)
// a könyv, amiből végre fogja hajtani az olvasás
Sheet: = ExlApp.Workbooks [ExtractFileName (XLSFile)] munkalapok [1].
// aktiválja az utolsó cella a munkalap
Sheet.Cells.SpecialCells (xlCellTypeLastCell, EmptyParam) .Activate;
// Visszaadja az utolsó sor száma
r: = ExlApp.ActiveCell.Row;
// számát adja vissza az utolsó oszlop
c: = ExlApp.ActiveCell.Column;
// A szám sorok és oszlopok a StringGrid
Grid.RowCount: = R;
Grid.ColCount: = C;
// értékét olvassa az egyes sejtek, és másolja az asztalunkra
j: = 1-R do
i: = 1-től c do
Grid.Cells [i-1, j-1]: = sheet.cells [j, i];
// ha el szeretné olvasni a képlet
//Grid.Cells[i-1,j-1]:= sheet.cells [j, i] .formula;
// bezárja az Excel alkalmazást
ExlApp.Quit;
// törölje a memóriát
ExlApp: = Unassigned;
Sheet: = Unassigned;
A eljárás Xls_Open két bemeneti paraméterek:
- XLSFile - az út, hogy az Excel-fájlt (xls)
- Rács - egy táblázatot, amely elvégzi kimenet.
Ahhoz, hogy használni Xls_Open felírni eljárások esetén kattintson Button1 gombra az alábbiak szerint:
Ha OpenDialog1.Execute majd Xls_Open (OpenDialog1.FileName, StringGrid1);
A fő hátránya ennek a módszernek: a lassú olvasási adatokat (bár kis fájlok tökéletesen illeszkedik), valamint annak szükségességét, hogy a változat Excel a számítógépen.
A teljes lista a program:
felhasználások
Ablakok, üzenetek, SysUtils, Változatok, osztályok, grafika, vezérlők, Forms,
Dialogs, rácsok, StdCtrls, ComObj;
eljárás Xls_Open (XLSFile: string; Grid: TStringGrid);
const
xlCellTypeLastCell = $ 0000000B;
var
ExlApp, lemez: OLEVariant;
i, j, R, C: integer;
kezdődik
// Létrehozunk egy Excel objektumot
ExlApp: = CreateOleObject ( 'Excel.Application');
// teszi Excel láthatatlan ablakban
ExlApp.Visible: = false;
// fájl megnyitása XLSFile
ExlApp.Workbooks.Open (XLSFile);
// létrehozni Sheet objektum (oldal), és adja meg a számot a lap (1)
// a könyv, amiből végre fogja hajtani az olvasás
Sheet: = ExlApp.Workbooks [ExtractFileName (XLSFile)] munkalapok [1].
// aktiválja az utolsó cella a munkalap
Sheet.Cells.SpecialCells (xlCellTypeLastCell, EmptyParam) .Activate;
// Visszaadja az utolsó sor száma
r: = ExlApp.ActiveCell.Row;
// számát adja vissza az utolsó oszlop
c: = ExlApp.ActiveCell.Column;
// A szám sorok és oszlopok a StringGrid
Grid.RowCount: = R;
Grid.ColCount: = C;
// értékét olvassa az egyes sejtek, és másolja az asztalunkra
j: = 1-R do
i: = 1-től c do
Grid.Cells [i-1, j-1]: = sheet.cells [j, i];
// ha el szeretné olvasni a képlet
//Grid.Cells[i-1,j-1]:= sheet.cells [j, i] .formula;
// bezárja az Excel alkalmazást
ExlApp.Quit;
// törölje a memóriát
ExlApp: = Unassigned;
Sheet: = Unassigned;
eljárás TForm1.Button1Click (Sender: TObject);
kezdődik
Ha OpenDialog1.Execute majd Xls_Open (OpenDialog1.FileName, StringGrid1);
végén;