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:

Citește fișier Excel (xls) în delphi

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».

Citește fișier Excel (xls) în delphi

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:

  1. XLSFile - calea către fișierul Excel (xls)
  2. 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;