Betöltése adatokat Excel Delphi stringgrid vagy tömb

A meglehetősen gyakori feladat a programozás - adatok letöltésére, hogy a projekt egy külső fájlból. Szemben a rendszerindítás egy sima szöveges fájl. betöltés Excel, valamint bármely más speciális fájl vagy egy adatbázis kapcsolatot. Szükség van egy külön mechanizmus végrehajtását.

Ez a cikk bemutatja az egyik legkényelmesebb módja, hogy működjön együtt betölthető Excel adatokat. Az értékek az összes oldal Excel sejteket bevezetjük egy kétdimenziós tömb típusú Variant. Aztán ez a tömb már lehet futtatni bármely szokásos módon.

Általánosságban elmondható, hogy ez jön le, hogy csatlakoztassa a programot, hogy az Excel-fájlt, hogy elérjük a kívánt cellatartományt, és értékeket a tömb megadott cellatartományt.

const
xlCellTypeLastCell = $ 0000000B;
var
ExcelApp, ExcelSheet: OLEVariant;
MyMass: Variant;
x, y: egész;
kezdődik
// Létrehozunk Excel OLE-objektumok
ExcelApp: = CreateOleObject ( 'Excel.Application');

// megnyitni egy Excel munkafüzet
ExcelApp.Workbooks.Open ( 'C: \ my_excel.xls');

// megnyitja a könyvet lap
ExcelSheet: = ExcelApp.Workbooks [1] .WorkSheets [1];

// kiadása a legújabb bekapcsolt cella a munkalap
ExcelSheet.Cells.SpecialCells (xlCellTypeLastCell) .Activate;

// kap a kiválasztott sáv mérete értékek
X: = ExcelApp.ActiveCell.Row;
y: = ExcelApp.ActiveCell.Column;

// hozzárendeljük a tömb cellatartományt a munkalapon
MyMass: = ExcelApp.Range [ 'A1', ExcelApp.Cells.Item [X, Y]] Érték ;.

// bezárja a könyvek és tisztító változók
ExcelApp.Quit;
ExcelApp: = Unassigned;
ExcelSheet: = Unassigned;
végén;

* SpecialCells módszert használjuk, hogy elválasszuk specifikus sejteket értékelése alapján azok tartalmát, vagy más jellemzőit. érték állandók xlCellTypeLastCell kifejezés azt a módszert, amellyel kiosztani az utolsó cella a tartomány, azaz Nagyon jobb alsó cella tartományban, ahol a bevezetett legalább valamilyen értéket. Ez lehetővé teszi, hogy másolja, nem minden levél sejtek, de csak a tartományban, amely tartalmazza az adatokat.

Ahhoz, hogy a parancsokat dolgozó OLE-objektumok a kódot meg kell adni a könyvtár:

Ezen műveletek után, az adatok bevitelét az array, ahonnan át lehet StringGrid alkatrész vagy használni őket saját belátása szerint. Érdemes megjegyezni, hogy az ily módon nyert tömb adatok indexek a következő sorrendben: [sorszám, oszlop számát]. Ez látható a következő példa kimenő adatok tömb StringGrid komponenst.

// hozzárendelés StringGrid mérete mérete előállított egy sor sejtek
MyStringGrid.RowCount: = x;
MyStringGrid.ColCount: = y;

// töltse tömb StringGrid táblázat értékeit
x: = 1 MyStringGrid.ColCount do
Y: = 1 MyStringGrid.RowCount do
MyStringGrid.Cells [X-1, y-1]: = MyMass [y, x];

Egy másik anyag ebből a szakaszból