Készítsen Excel fájlt, és írjon használatával ole

Készítsen Excel fájl és írd rá a segítségével OLE

Senki sem fog dobni egy példát?
A Fake egy nagyszerű példa, hogy nyissa ki és olvassa meglévő fájlból ekselevskogo.






(Az én kis módosításokkal „helyett”, hogy van, hogy a)
=====================
eljárás TForm1.Button1Click (Sender: TObject);
var
# XA0; Excel. Variant;
# XA0; munkalapot. Variant;
# XA0; I, J # XA0; Integer;
# XA0; cls_ExcelObject # XA0;: string;
# XA0; regData. TRegistry;
kezdődik

# XA0; cls_ExcelObject: = "Excel.Application";
# XA0; regData: = TRegistry.Create;
# XA0; # XA0; regData.RootKey: = HKEY_CLASSES_ROOT;
# XA0; # XA0; # XA0, próbálja # XA0; # XA0, ha regData.OpenKey ( "\ Excel.Application \ CURVER", False), majd
# XA0; # XA0; # XA0; # XA0; # XA0; kezdődik # XA0; # XA0; # XA0; cls_ExcelObject: = regData.ReadString ( "");
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; regData.CloseKey;
# XA0; # XA0; # XA0; # XA0; # XA0; vég
# XA0; # XA0; végül # XA0; # XA0; regData.Free; # XA0; end;

# XA0, ha OpenDialog1.Execute ezután kezdődik
# XA0; # XA0; Excel: = CreateOleObject ( # XA0; cls_ExcelObject);
# XA0; # XA0; Excel.Visible: = false;
# XA0; # XA0; Excel.Workbooks.Open (OpenDialog1.FileName);

# XA0; # XA0; munkalap: = Excel.Workbooks [1] .WorkSheets [1];
# XA0; # XA0; ListView1.Columns.Clear;
# XA0; # XA0; ListView1.Items.Clear;
# XA0; # XA0, mert én: = 1-től WorkSheet.Cells.CurrentRegion.Columns.Count csinálni
# XA0; # XA0; # XA0; ListView1.Columns.Add.Caption: = VarToStr (WorkSheet.Cells [1, I]);
# XA0; # XA0, mert én: = 1-től WorkSheet.Cells.CurrentRegion.Rows.Count csinálni
# XA0; # XA0; A ListView1.Items.Add do kezdődik
# XA0; # XA0; # XA0; Caption: = VarToStr (WorkSheet.Cells [I, 1]);
# XA0; # XA0; # XA0; a J: = 2 WorkSheet.Cells.CurrentRegion.Columns.Count do
# XA0; # XA0; # XA0; # XA0; SubItems.Add (VarToStr (WorkSheet.Cells [i, j]));
# XA0; # XA0; end;
# XA0; # XA0; Excel.Workbooks.Close;
# XA0; # XA0; Excel.Quit;
# XA0; end;
végén;
===================

De kell, hogy hozzon létre egy fájlt, és ekselevsky néhány egyszerű vonalak, hogy dobja a kívánt sejteket.

Először is, magyarázza a fene olvassa el a registry?
CreateOleObject ( "Excel.Application")
Ez fut az összes operációs rendszer bármely változata Excel.

> Kevés egyszerű vonalak, hogy dobja a kívánt sejtek.
Excel.WorkBooks [1] .Sheets [1] .Cells [2,2]: = "GanibalLector";

Olvasás a registry egyszer volt szükség (ez most lehetséges, hogy nem szükséges) - mert különben Excel, ha a gépek voltak más, akkor valami hiba van. Tól reetsa helyettesített verziószáma Excel (ismétlem, hogy talán most már nem a saját Delphi ozabachivaya ilyen árnyalatok a programozó)







Szükségem adatokat exportálni Delphi ekselevsky fájlt.
Mielőtt (a program fut 6 év), megcsináltam a szövegben, és most részesülő korszerűsítési program, és szükség, hogy az adatok a ekselevskom fájlt.

Azt ozabachivaet nem kódsort, hogyan kell írni egy nyitott ekselevsky fájlt, de a Delphi létrehoz egy új fájlt ekselevsky, adja meg a nevét. # XA0, hozzá # XA0; Kellett info, mentse és zárja be a fájlt.
Az elmúlt néhány évben, szinte nem csinál programozás, tegnap leült, és bebizonyította, hogy nagyon nehéz belépni a folyamat, én fék. (A D7 nem tudok még találni egy segítség, hogy az alkatrészek, mint ExcelAplication, amint a tanúsítvány nem építették újjá, amíg néztem forráskódú komponensek -. De ez nagyon kényelmetlen és segítségével a lehetetlen ellenőrizni)

Eljárás Tform6.WriteIntoExel;
var
ExcelApp, munkafüzet, Range, CELL1, CELL2, ArrayData: Variant;
St: String;
BeginCol, BeginRow, I, J: integer;
ROWCOUNT, ColCount: integer;
kezdődik
BeginCol: = 2;
BeginRow: = 2;
ROWCOUNT: = Form4.Query1.RecordCount + 1 + 5 * Form5.ListBox1.Items.Count;
ColCount: = 10;
ExcelApp: = CreateOleObject ( "Excel.Application");
ExcelApp.Application.EnableEvents: = false;
Munkafüzet: = ExcelApp.WorkBooks.Add;
ArrayData: = VarArrayCreate ([1, ROWCOUNT, 1, ColCount], varVariant);
Form4.Query1.First;
St: = Form4.Query1.FieldByName ( "név") AsVariant ;.
J: = 6;
ArrayData [1,3]: = „jelentése a szállítás késztermékek”;
ArrayData [3,2]: = Form4.Query1.FieldByName ( "név") AsVariant ;.
ArrayData [4,5]: = "között" + Form5.MaskEdit1.Text + "a" + Form5.MaskEdit2.Text;
i: = 1 Form4.Query1.RecordCount do
# XA0; # XA0; kezdődik
# XA0; # XA0; # XA0; Ha St<>Form4.Query1.FieldByName ( "name"). AsVariant majd
# XA0; # XA0; # XA0; # XA0; kezdődik
# XA0; # XA0; # XA0; # XA0; # XA0; St: = Form4.Query1.FieldByName ( "név") AsVariant ;.
# XA0; # XA0; # XA0; # XA0; # XA0; ArrayData [j + 2,2]: = Form4.Query1.FieldByName ( "név") AsVariant ;.
# XA0; # XA0; # XA0; # XA0; # XA0; ArrayData [j + 3,5]: = "között" + Form5.MaskEdit1.Text + "a" + Form5.MaskEdit2.Text;
# XA0; # XA0; # XA0; # XA0; # XA0; J: = j + 5;
# XA0; # XA0; # XA0; # XA0; végén;
# XA0; # XA0; # XA0; ArrayData [J, 1]: = Form4.Query1.FieldByName ( "NAME_1") AsVariant ;.
# XA0; # XA0; # XA0; ArrayData [J, 6]: = Form4.Query1.FieldByName ( "összege Allart") AsVariant ;.
# XA0; # XA0; # XA0; ArrayData [J, 7]: = Form4.Query1.FieldByName ( "Edizm") AsVariant ;.
# XA0; # XA0; # XA0; J: = j + 1;
# XA0; # XA0; # XA0; Form4.Query1.Next;
# XA0; # XA0; végén;
# XA0; # XA0; CELL1: = WorkBook.WorkSheets [1] .Cells [BeginRow, BeginCol];
# XA0; # XA0; CELL2: = WorkBook.WorkSheets [1] .Cells [BeginRow + ROWCOUNT-1, BeginCol + ColCount-1];
# XA0; # XA0; tartomány: = WorkBook.WorkSheets [1] .Range [CELL1, CELL2];
# XA0; # XA0; Range.Value: = ArrayData;
# XA0; # XA0; ExcelApp.Visible: = true;
végén;

Hatalmas köszönet uraim!
Ma este azt hiszem meg tudom csinálni alapján ezeket a kódokat, amit akarok.

de vannak hibák a munka [4] (bár lehet, hogy csak nekem működik hibás). A probléma az, hogy költenek megőrzésére jelek

fél perc (200 sor 15 oszlop). És ha láthatóvá teszik = true (megjeleníti a folyamat a töltés a sejtek), majd piszkálni valahol, például a menüben, a felvétel gyorsított minden 5.

Csak azt akarom kérdezni, hogy az Excel néhány módszer, mint BeginUpdate / EndUpdate, vagy valami, hogy gyorsítsák fel a felvételt.

Ahhoz, hogy gyorsítsák fel, használja a vágólap (bár sokan nem szeretik) .Van sebességű változata a Word.Mogu show.

> Ezután piszkálni valahol, például a menüben, a felvétel gyorsított minden 5
Úgy látszik, ez annak köszönhető, hogy a prioritás.

> Én csak azt szeretném kérdezni, hogy az Excel néhány módszer
> BeginUpdate / EndUpdate típus, vagy valami, hogy gyorsítsák fel a felvételt.




Kapcsolódó cikkek