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];