Entwickler-Ecke

Sonstiges (Delphi) - Problem mit Excel


juelin - So 27.11.11 12:05
Titel: Problem mit Excel
Hallo,
ich benutze Delphi 7.
Ich möchte ein Excelfile erstellen und habe folgenden Code:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
  var Excel: Variant;
  var exfile: String// Inhalt 'c:\abc.xls'
  var exsheet: String;  // Inhalt 'abc'
  var tof: File;
  var exzeile: integer;
  var exspalte: integer;
  var a: integer;
  a:=0;
  AssignFile(tof, exfile);
  {$i-}
  Rewrite(tof, 1);
  {$I+}
  if (IOResult = 0then
  begin
    CloseFile(tof);
    try
      Excel:=CreateOleObject('Excel.Application');
      a:=1;
    except
      ShowMessage('Excel konnte nicht gestartet werden');
    end;
    if a = 1 then
    begin
      Excel.Visible:=True;
      Excel.WorkBooks.Open(exfile);
      Excel.Sheets[exsheet].Activate;
      exzeile:=1;
      exspalte:=1;
      Excel.Cells[exzeile, exspalte].NumberFormat:='@';
      Excel.Cells[exzeile, exspalte].HorizontalAlignment:=xlHAlignLeft;
      Excel.Cells[exzeile, exspalte].Interior.Color:=clBlue;
      Excel.Cells[exzeile, exspalte].Font.Size:=10;
      Excel.Cells[exzeile, exspalte].Font.FontStyle:='Bold';
      Excel.Cells[exzeile, exspalte].Font.Color:=clYellow;
      Excel.Cells[exzeile, exspalte].Font.Name:='Courier New';
      Excel.Cells[exzeile, exspalte].Value:='Anrede'+Chr(10)+Chr(13)+'Titel';
      Excel.Workbooks.Close;
      Excel.Quit;
      Excel:= Unassigned;
    end;
  end;

Auf dem Bildschirm sieht das Excelfile gut aus (Feld Blau Schrift Gelb).
Wenn ich das Excelfile mit dem Windows-Explorer aufrufe ist aber das Feld Weiß und die Schrift Schwarz.

Was mache ich falsch?

NEU NEU NEU !!!!!!!
Jetzt habe ich herausgefunden: Beim Befehl Excel.Workbooks.Close kommen Meldungsboxen hoch.
1. Meldungsbox Microsoft Excel "Sollen Ihre Änderungen in abc.xls gespeichert werden?" Ja, Nein, Abbrechen Ich drücke Ja
2. Speichern unter Box. Der Filename steht drin. Aber unter Filetype steht "Text (Tabstopp-getrennt (*.txt)" Sollte aber Excel-Arbeirsmappe sein. Ich drücke speichern.
3. Meldungsbox "Die Datei abc.xls besteht bereits. Möchten Sie die bestehende Datei ersetzen?" Ja, Nein Ich drücje Ja.

Wie kann man diese Medungsboxen unterdrücken (automatisch abarbeiten. Und wie kann der richtige Filetype eingestellt werden. ????

Gruss
Jürgen

Moderiert von user profile iconTh69: Delphi-Tags hinzugefügt
Moderiert von user profile iconNarses: Topic aus Programmierwerkzeuge verschoben am Mo 28.11.2011 um 05:37


Chatfix - Mi 07.12.11 06:57

Versuchsmal mit Excel.Workbook.SaveAs

Siehe auch: http://msdn.microsoft.com/de-de/library/microsoft.office.tools.excel.workbook.saveas(v=vs.80).aspx
Ich weiß dort ist nicht Delphi, sollte aber durch die API der gleiche Aufruf sein.

Das das ganze vor dem Close kommen muss versteht sich ja sicher von selbst.