AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Excel beenden

Ein Thema von Nicodius · begonnen am 8. Mai 2004 · letzter Beitrag vom 8. Mai 2004
Antwort Antwort
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#1

Excel beenden

  Alt 8. Mai 2004, 16:52
wie kann ich excel beenden ohen das der Savedialog aufgerufen wird?


in der delphi-source download hilfe hab ichs zwar gefudnen aber das mit dem funktionier net ...

wo ist denn die komponente überhaupt die da steht

ich zitiere(bei mir kommen fehler(uses klausel geht!) oder den rest check ich nicht ganz


--- Aus der Delphi-source hilfe

Wie kann ich Excel schließen?


Eine Application-Variable Excel und eine Integer-Variable LCID, der Sie den Wert GetUserDefaultLCID zugewiesen haben, vorausgesetzt:

Frühe Bindung:

Code:
 { Uncomment the next line if you want Excel to quit without asking
    whether to save the worksheet }
  // Excel.DisplayAlerts[LCID] := False;
  Excel.Quit;
Wenn Sie die D5-Server-Komponenten verwenden, sollten Sie die Verbindung lösen:

Code:
Excel.Disconnect;
Wenn Sie eine _Application-Interface-Variable verwenden, sollten Sie diese stattdessen auf nil setzen:

Excel := nil; Späte Bindung:

Code:
{ Uncomment the next line if you want Excel to quit without asking
    whether to save the worksheet }
  // Excel.DisplayAlerts := False;
  Excel.Quit;
  Excel := Unassigned;
Beachten Sie jedoch, dass Excel unsichtbar laufend im Hauptspeicher verbleibt, wenn Sie nicht alle Ihre Workbook- und Worksheet-Variablen freigegeben haben. Trennen Sie die Verbindung aller Komponenten (disconnect), setzen Sie alle Interface-Variablen auf nil und setzen Sie Variant-Variablen auf unassigned, um dies zu verhindern.
Nico Müller
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: Excel beenden

  Alt 8. Mai 2004, 17:11
Zitat:
bei mir kommen fehler
Aha, ein Fehler kommt? Wie heisst denn der?
Thomas
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#3

Re: Excel beenden

  Alt 8. Mai 2004, 17:20
das er die befehle quit nicht kennt oder die anderen..
Nico Müller
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#4

Re: Excel beenden

  Alt 8. Mai 2004, 17:21
Bitte poste mal den gesamten für uns relevanten Quellcode.
(Oder Demo Projekt zum Testen)
Thomas
  Mit Zitat antworten Zitat
Cuchulainn

Registriert seit: 26. Aug 2003
182 Beiträge
 
Delphi 5 Enterprise
 
#5

Re: Excel beenden

  Alt 8. Mai 2004, 17:22
Poste bitte mal den entsprechenden Teil deines Quelltextes.
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#6

Re: Excel beenden

  Alt 8. Mai 2004, 17:26
ok
Nico Müller
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#7

Re: Excel beenden

  Alt 8. Mai 2004, 17:28
Delphi-Quellcode:
function StringGridToExcelSheet(Grid: TStringGrid; SheetName, FileName: string;
  ShowExcel: Boolean): Boolean;
const
  xlWBATWorksheet = -4167;
var
  SheetCount, SheetColCount, SheetRowCount, BookCount: Integer;
  XLApp, Sheet, Data: OLEVariant;
  I, J, N, M: Integer;
  SaveFileName : String;
begin
  //notwendige Sheetanzahl feststellen
  SheetCount := (Grid.ColCount div 256) + 1;
  if Grid.ColCount mod 256 = 0 then
     SheetCount := SheetCount - 1;
  //notwendige Bookanzahl feststellen
  BookCount := (Grid.RowCount div 65536) + 1;
  if Grid.RowCount mod 65536 = 0 then
     BookCount := BookCount - 1;

  //Create Excel-OLE Object
  Result := False;
  XLApp := CreateOleObject('Excel.Application');
  try
    //Excelsheet anzeigen
    if ShowExcel = false then
       XLApp.Visible := False
    else
       XLApp.Visible := True;
    //Workbook hinzufügen
    for M := 1 to BookCount do
    begin
        XLApp.Workbooks.Add(xlWBATWorksheet);
        //Sheets anlegen
        for N := 1 to SheetCount - 1 do
        begin
          XLApp.Worksheets.Add;
        end;
    end;
    //Sheet ColAnzahl feststellen
    if Grid.ColCount <= 256 then
       SheetColCount := Grid.ColCount
    else
       SheetColCount := 256;
    //Sheet RowAnzahl feststellen
    if Grid.RowCount <= 65536 then
       SheetRowCount := Grid.RowCount
    else
       SheetRowCount := 65536;

    //Sheets befüllen
    for M := 1 to BookCount do
    begin
        for N := 1 to SheetCount do
        begin
          //Daten aus Grid holen
          Data := VarArrayCreate([1, Grid.RowCount, 1, SheetColCount], varVariant);
          for I := 0 to SheetColCount - 1 do
            for J := 0 to SheetRowCount - 1 do
              if ((I+256*(N-1)) <= Grid.ColCount) and ((J+65536*(M-1)) <= Grid.RowCount) then
                Data[J + 1, I + 1] := Grid.Cells[I+256*(N-1), J+65536*(M-1)];

          XLApp.Worksheets[N].Select;
          XLApp.Workbooks[M].Worksheets[N].Name := SheetName + IntToStr(N);
          //Zellen als String Formatieren
          XLApp.Workbooks[M].Worksheets[N].Range[RefToCell(1, 1), RefToCell(SheetRowCount,
            SheetColCount)].Select;
          XLApp.Selection.NumberFormat := '@';
          XLApp.Workbooks[M].Worksheets[N].Range['A1'].Select;
          //Daten dem Excelsheet übergeben
          Sheet := XLApp.Workbooks[M].WorkSheets[N];
          Sheet.Range[RefToCell(1, 1), RefToCell(SheetRowCount,SheetColCount)].Value := Data;
        end;
    end;
    //Save Excel Worksheet
    try
      for M := 1 to BookCount do
      begin
          SaveFileName := Copy(FileName,1,Pos('.',FileName)-1) + IntToStr(M) +
          Copy(FileName,Pos('.',FileName),
          Length(FileName)-Pos('.',FileName)+1);
          XLApp.Workbooks[M].SaveAs(Filename);
      end;
      Result := True;
    except
      // Error?
    end;
  finally
    //Excel beenden
    if (not VarIsEmpty(XLApp)) and (ShowExcel = false) then
    begin
      XLApp.DisplayAlerts := False;
      XLApp.Quit;
      XLAPP := Unassigned;
      Sheet := Unassigned;
    end;
  end;
end;
function GenerateUniqueFileName(FileName: String): String;
var count: integer;
begin
  if not FileExists(FileName) then
  begin
    result := FileName;
    exit;
  end;
  count:=1;
  while FileExists(ChangeFileExt(FileName, '')+'-'+IntToStr(count)+
  ExtractFileExt(FileName)) do
    Inc(Count);
  result := ChangeFileExt(FileName,'')+'-'+IntToStr(count)+ExtractFileExt(FileName);
end;

procedure TForm1.Gewinner(Spieler: String);
var i, j : Integer;
    Data : String;
    datei : TStringlist;
begin
  LCID := GetUserDefaultLCID ;
  Datei := TStringlist.Create;
  Datei.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Spiele\Datei.txt');
  for I := 0 to StringGrid1.ColCount - 1 do
    for J:= 0 to StringGrid1.RowCount - 1 do
      If Stringgrid1.Cells[i,j] = 'then Stringgrid1.Cells[i,j] := '-';
 // Data := GenerateUniqueFileName(ExtractFilePath(ParamStr(0)) + 'Spiele\' +Spieler + 'Sieg');
  //StringGrid-Inhalt in Excel exportieren
  //Grid: StringGrid, SheetName: Stringgrid Print,
  //Pfad: c:\Test\ExcelFile.xls, Excelsheet anzeigen
  StringGridToExcelSheet(StringGrid1, Spieler + ' Sieg', ExtractFilePath(ParamStr(0)) + 'Spiele\' +Spieler + 'Sieg' + Datei[0],True);
 // Excel.Quit;
  //Excel := Unassigned;
  Showmessage(Spieler + ' gewinnt');
  Label1.caption := 'Spielstand: ' + IntToStr(Pkt1) + ':' + IntToStr(Pkt2);
  for I := 0 to StringGrid1.ColCount - 1 do
    for J:= 0 to StringGrid1.RowCount - 1 do
      Stringgrid1.Cells[i,j] := '';
  Zug := 0;
  Datei[0] := IntToStr(StrToInt(Datei[0])+1);
  Datei.SaveToFile(ExtractFilePath(ParamStr(0)) + 'Spiele\Datei.txt');

end;
Nico Müller
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#8

Re: Excel beenden

  Alt 8. Mai 2004, 17:29
Hänge die Source-Datei mit dem Code an, so ist es relativ schwer, den Code zu überschauen und der Beitrag wird relativ lang...
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#9

Re: Excel beenden

  Alt 8. Mai 2004, 17:32
hmm also weiß das niemand? schade.. hier ist mal der Quelltext!
Angehängte Dateien
Dateityp: pas unit1_196.pas (5,4 KB, 9x aufgerufen)
Nico Müller
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz