Încărcarea datelor de la excel la delphi stringgrid sau matrice

O sarcină destul de obișnuită în programare este încărcarea datelor într-un proiect dintr-un fișier extern. Spre deosebire de încărcarea dintr-un fișier text obișnuit. Descărcați din Excel, precum și orice alt fișier special sau conectați-vă la baza de date. necesită un mecanism de implementare separat.







Acest articol discută una dintre cele mai convenabile modalități de a lucra cu datele încărcate din Excel. Valorile tuturor celulelor din pagina Excel sunt introduse într-o matrice bidimensională de tip Variant. Apoi, cu această matrice, puteți lucra deja cu oricare dintre modurile obișnuite.

În general, totul se reduce la conectarea programului la un fișier Excel, obținerea intervalului necesar de celule și atribuirea unei matrice pentru o anumită gamă de celule.

const
xlCellTypeLastCell = $ 0000000B;
var
ExcelApp, ExcelSheet: OLEVariant;
MyMass: varianta;
x, y: Integer;
începe
// crea OLE-obiect Excel
ExcelApp: = CreateOleObject ("Excel.Application");

// Deschideți agenda de lucru Excel
ExcelApp.Workbooks.Open ("C: \ my_excel.xls");

// deschideți o foaie de lucru
ExcelSheet: = ExcelApp.Workbooks [1] .File de lucru [1];







// evidențiați ultima celulă activată de pe foaie
ExcelSheet.Cells.SpecialCells (xlCellTypeLastCell); Activare;

// obțineți valorile dimensiunii din intervalul selectat
x: = ExcelApp.ActiveCell.Row;
y: = ExcelApp.ActiveCell.Column;

// atribuirea unei matrice dintr-o gamă de celule pe o foaie
MyMass: = ExcelApp.Range ['A1', ExcelApp.Cells.Item [X, Y]] Valoare;

// închiderea cărții și ștergerea variabilelor
ExcelApp.Quit;
ExcelApp: = Neasignat;
ExcelSheet: = Neasignat;
se încheie;

* Metoda SpecialCells este utilizată pentru selectarea celulelor specifice pe baza unei estimări a conținutului lor sau a altor caracteristici. Valoarea parametrului constant xlCellTypeLastCell folosită aici specifică metoda de selectare a ultimei celule din domeniul utilizat, adică cel mai bun cel din dreapta jos, în intervalul în care este introdusă cel puțin o anumită valoare. Acest lucru vă permite să copiați nu toate celulele foii, ci doar o gamă care conține orice date.

Pentru a utiliza comenzile de operare obiect OLE pentru acest cod, trebuie să adăugați o bibliotecă:

După aceste operații, datele sunt introduse într-o matrice din care le puteți transfera la componenta StringGrid sau le puteți folosi la discreția dvs. Merită menționat faptul că în matricea astfel obținută, indicii sunt aranjați în următoarea ordine: [numărul liniei, numărul coloanei]. Acest lucru poate fi văzut din următorul exemplu de ieșire a datelor de array către componenta StringGrid.

// atribuiți dimensiunea StringGrid la dimensiunea intervalului de celule care rezultă
MyStringGrid.RowCount: = x;
MyStringGrid.ColCount: = y;

// populați tabelul StringGrid cu valorile matricei
pentru x: = 1 la MyStringGrid.ColCount do
pentru y: = 1 la MyStringGrid.RowCount nu
MyStringGrid.Cells [x-1, y-1]: = MyMass [y, x];

Mai multe din această secțiune







Trimiteți-le prietenilor: