Ich habe Messwerte, die ich mittels SaveToFile(‚datei.xls‘) ins Excel-Format bringen will. Mein Problem liegt darin, Werte den einzelnen Spalten zuzuweisen. Wie kann ich also gezielt Messwerte in Zeile x und Spalten y bringen?
Bisher habe ich einfach die Listbox verwendet und diese als .xls abgespeichert. Natürlich erreiche ich so keine gezielte Spaltenzuordnung.
Hi,
hier die etwas kompliziertere Methode über das ActiveX/Ole Objekt Excel und Co, weil: es kann ja mal sein, das der Inhalt selbst die Spaltentrenner beinhaltet und dann funktionierts nicht mehr mit TAB, resp. Semikolon und was nicht noch alles:
var
lcid,i : longint;
excel : TExcelApplication;
WS : TExcelWorksheet;
Workbook : TExcelWorkbook;
begin
lcid := GetUserDefaultLCID;
Workbook.ConnectTo(Excel.Workbooks.Add
(TOleEnum(xlWBATWorksheet), lcid));
Ws.ConnectTo (Workbook.Worksheets[1] as _Worksheet);
// excel ist da, aber nicht sichtbar
Excel.Visible[lcid]:=false;
// Spalte 1, Zeile 1
Ws.Cells.Item[1, 1].Value:=‚Name‘;
// Spalte 2, Zeile 1
Ws.Cells.Item[1, 2].Value:=‚Vorname‘;
// bischen die Farbe ändern…
Ws.Range[‚A2‘, ‚A2‘].EntireRow.Interior.Color:=clYellow;
// bischen Fetter
Ws.Range[‚A2‘, ‚A2‘].Font.FontStyle := ‚Bold‘;
// Jetzt die weiteren Spalten und Zeilen füttern
for I:=0 to endlos do begin
Ws.Cells.Item[I, 1].Value:=‚Name…‘;
Ws.Cells.Item[I, 2].Value:=‚Vorname…‘;
end;
// Exceltabelle sichern
Ws.SaveAs(‚meineExcelDatei.xls‘);
// und aufräumen
Ws.Disconnect;
Workbook.Disconnect;
Excel.Disconnect;
end;
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Methode über das ActiveX/Ole
Objekt Excel und Co, weil: es kann ja mal sein, das der Inhalt
selbst die Spaltentrenner beinhaltet und dann funktionierts
nicht mehr mit TAB, resp. Semikolon und was nicht noch alles:
Genau, daran hab ich gar nicht gedacht.
Unten beschreibst du, wie es mit dem Ole-Ding gemacht wird - es klappt (bei mir) aber nicht. Kannst du mir das nochmal erklären? Vielleicht anhand eines Beispiels - was weiß ich; auf ButtonClick schreibe in Zeile/Spalte, speichere Excel-Formular (oder besser Drucke es und beende Excel, ohne dass Excel-Formular gesehen wird). Das bräuchte ich.
Hab mich immer schon gefragt wofür diese „Ole’s“ sind. Jetzt hast du mich neugierig gemacht. Bitte nochmal erklären - DANKE!
Luggi
var
lcid,i : longint;
excel : TExcelApplication;
WS : TExcelWorksheet;
Workbook : TExcelWorkbook;
begin
lcid := GetUserDefaultLCID;
Workbook.ConnectTo(Excel.Workbooks.Add
(TOleEnum(xlWBATWorksheet), lcid));
Ws.ConnectTo (Workbook.Worksheets[1] as _Worksheet);
// excel ist da, aber nicht sichtbar
Excel.Visible[lcid]:=false;
// Spalte 1, Zeile 1
Ws.Cells.Item[1, 1].Value:=‚Name‘;
// Spalte 2, Zeile 1
Ws.Cells.Item[1, 2].Value:=‚Vorname‘;
// bischen die Farbe ändern…
Ws.Range[‚A2‘, ‚A2‘].EntireRow.Interior.Color:=clYellow;
// bischen Fetter
Ws.Range[‚A2‘, ‚A2‘].Font.FontStyle := ‚Bold‘;
// Jetzt die weiteren Spalten und Zeilen füttern
for I:=0 to endlos do begin
Ws.Cells.Item[I, 1].Value:=‚Name…‘;
Ws.Cells.Item[I, 2].Value:=‚Vorname…‘;
end;
// Exceltabelle sichern
Ws.SaveAs(‚meineExcelDatei.xls‘);
// und aufräumen
Ws.Disconnect;
Workbook.Disconnect;
Excel.Disconnect;
end;
Methode über das ActiveX/Ole
Objekt Excel und Co, weil: es kann ja mal sein, das der Inhalt
selbst die Spaltentrenner beinhaltet und dann funktionierts
nicht mehr mit TAB, resp. Semikolon und was nicht noch alles:
Genau, daran hab ich gar nicht gedacht.
Unten beschreibst du, wie es mit dem Ole-Ding gemacht wird
es klappt (bei mir) aber nicht. Kannst du mir das nochmal
erklären? Vielleicht anhand eines Beispiels - was weiß ich;
auf ButtonClick schreibe in Zeile/Spalte, speichere
Excel-Formular (oder besser Drucke es und beende Excel, ohne
dass Excel-Formular gesehen wird). Das bräuchte ich.
Hab mich immer schon gefragt wofür diese „Ole’s“ sind. Jetzt
hast du mich neugierig gemacht. Bitte nochmal erklären -
DANKE!
Luggi
Hi Luggi,
ich versuchs am Wochenende - kommt per Mail.
Grüße
Mathias