Citește fișier Excel (xls) în delphi
În scris, aplicații de afaceri pe Delphi, sau efectuarea de orice calcule, poate fi necesar pentru a importa fișiere (de export) de date din alte aplicații. Una dintre principalele aplicații, cum ar - MS Excel. Cum să citiți faylyxls vDelphi considerăm acum!?
Crearea unui proiect nou și plasați sub formă de trei componente:
StringGrid - este pe paleta de componente, în fila Suplimentar
Buton pentru selectarea ușoară a fișierelor, fișier de dialog deschis (de lucru cu dialoguri este descris aici).
Pentru StringGrid. în proprietăți (Proprietăți), precizează următoarele:
DefaultRowHeight - 17
FixedCols - 0
FixedRows - 0
Ca urmare, formularul va arata astfel:
La acest finisaj înfrumusețarea și începe scrierea de cod.
Pentru a lucra cu fișiere Excel, avem nevoie de ComObj bibliotecă, o parte din livrare standard de Delphi. Conectați-l la secțiunea de utilizări. Adăugați la sfârșitul anului, după virgulă «ComObj».
Acum descrie procedura Xls_Open după punerea în aplicare a cuvintelor cheie:
Procedura Xls_Open (XLSFile: string; Grid: TStringGrid);
const
xlCellTypeLastCell = $ 0000000B;
var
ExlApp, Sheet: OLEVariant;
i, j, r, c: întreg;
începe
// Crearea unui obiect Excel
ExlApp: = CreateOleObject ( 'Excel.Application');
// face Excel fereastră invizibil
ExlApp.Visible: = false;
// deschide fișierul XLSFile
ExlApp.Workbooks.Open (XLSFile);
// crea un obiect Sheet (pagină) și specificați numărul foii (1)
// în carte, din care vom efectua citirea
Sheet: = ExlApp.Workbooks [ExtractFileName (XLSFile)] Worksheets [1].
// activează ultima celulă din foaia de lucru
Sheet.Cells.SpecialCells (xlCellTypeLastCell, EmptyParam) .Activate;
// Returnează ultimul număr de linie
r: = ExlApp.ActiveCell.Row;
// Returnează numărul ultimei coloane
c: = ExlApp.ActiveCell.Column;
// setați numărul de coloane și rânduri în StringGrid
Grid.RowCount: = r;
Grid.ColCount: = c;
// citește valoarea fiecărei celule și copiați tabelul nostru
pentru j: = 1 la r do
pentru i: = 1 c face
Grid.Cells [i-1, j-1]: = sheet.cells [j, i];
// dacă doriți să citiți cu formula
sheet.cells //Grid.Cells[i-1,j-1]:= [j, i] .formula;
// închide aplicația Excel
ExlApp.Quit;
// șterge memoria alocată
ExlApp: = Unassigned;
Fișa: = Unassigned;
Procedura noastră Xls_Open are doi parametri de intrare:
- XLSFile - calea către fișierul Excel (xls)
- Grid - un tabel, care se va efectua de ieșire.
Pentru a utiliza Xls_Open prescrie proceduri în cazul clic pe butonul Button1 după cum urmează:
Dacă OpenDialog1.Execute apoi Xls_Open (OpenDialog1.FileName, StringGrid1);
Principalele dezavantaje ale acestei metode: a lent date de citire (deși pentru fișiere mici se va potrivi perfect) și necesitatea pentru versiunea de Excel pe computer.
O listă completă a programului:
utilizări
Ferestre, Mesaje, SysUtils, variante, Clase, grafică, controale, Formulare,
Dialoguri, Grile, StdCtrls, ComObj;
Procedura Xls_Open (XLSFile: string; Grid: TStringGrid);
const
xlCellTypeLastCell = $ 0000000B;
var
ExlApp, Sheet: OLEVariant;
i, j, r, c: întreg;
începe
// Crearea unui obiect Excel
ExlApp: = CreateOleObject ( 'Excel.Application');
// face Excel fereastră invizibil
ExlApp.Visible: = false;
// deschide fișierul XLSFile
ExlApp.Workbooks.Open (XLSFile);
// crea un obiect Sheet (pagină) și specificați numărul foii (1)
// în carte, din care vom efectua citirea
Sheet: = ExlApp.Workbooks [ExtractFileName (XLSFile)] Worksheets [1].
// activează ultima celulă din foaia de lucru
Sheet.Cells.SpecialCells (xlCellTypeLastCell, EmptyParam) .Activate;
// Returnează ultimul număr de linie
r: = ExlApp.ActiveCell.Row;
// Returnează numărul ultimei coloane
c: = ExlApp.ActiveCell.Column;
// setați numărul de coloane și rânduri în StringGrid
Grid.RowCount: = r;
Grid.ColCount: = c;
// citește valoarea fiecărei celule și copiați tabelul nostru
pentru j: = 1 la r do
pentru i: = 1 c face
Grid.Cells [i-1, j-1]: = sheet.cells [j, i];
// dacă doriți să citiți cu formula
sheet.cells //Grid.Cells[i-1,j-1]:= [j, i] .formula;
// închide aplicația Excel
ExlApp.Quit;
// șterge memoria alocată
ExlApp: = Unassigned;
Fișa: = Unassigned;
Procedura TForm1.Button1Click (Expeditor: TObject);
începe
Dacă OpenDialog1.Execute apoi Xls_Open (OpenDialog1.FileName, StringGrid1);
se încheie;