Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   String in excel (https://www.delphipraxis.net/92043-string-excel.html)

SaFu 13. Mai 2007 20:57


String in excel
 
Hi habe mal ne frage

hab das hier in dem Delphi Forum gefunden

[cl]
StinGrid - Inhalt nach Excel exportieren
[/cl]

und wollte mir jetzt ein StringGrid in eine Excel datei impotieren lassen

wie mache ich das über einen Button mit diesem code Komm nicht drauf?

Danke schonmal

[edit=SirThornberry]Beitragstitel korrigiert - Mfg, SirThornberry[/edit]

Mussi0 14. Mai 2007 07:39

Re: Sting in excel
 
Hi,

du solltest vielleicht mal den Code posten, weil
hinter dem Link kommt nichts!!
Außerdem beschreib bitte mal was du genau willst!

Wenn du die Daten von einem StringGrid in ein Excel-Sheet transportieren willst
dann musst du glaub ich eine OLE Komponente suchen.

Gruß

Muss!0

Mussi0 14. Mai 2007 07:43

Re: Sting in excel
 
Schau mal da scheint sowas zu sein;-)
http://www.delphipraxis.net/internal...ht=daten+excel

Gruß

Muss!0

smudo 14. Mai 2007 08:17

Re: Sting in excel
 
Wow - Sting in Excel!

Wo ist Excel?
Wann soll das sein?
Wieviel kosten die Karten?

:mrgreen:

Mussi0 14. Mai 2007 09:49

Re: Sting in excel
 
*g* das hab ich garnicht gesehen hab ich total übersehen ;-)

SaFu 14. Mai 2007 18:10

Re: Sting in excel
 
Ok das mit der überschrift ist peinlich :oops:

Das ist der code den ich hier gefunden habe damit soll es gehen aber wie rufe ich das jetzt mit einenm Button ab

Delphi-Quellcode:
function RefToCell(RowID, ColID: Integer): string;
var
  ACount, APos: Integer;
begin
  ACount := ColID div 26;
  APos  := ColID mod 26;
  if APos = 0 then
  begin
    ACount := ACount - 1;
    APos  := 26;
  end;

  if ACount = 0 then
     Result := Chr(Ord('A') + ColID - 1) + IntToStr(RowID);

  if ACount = 1 then
     Result := 'A' + Chr(Ord('A') + APos - 1) + IntToStr(RowID);

  if ACount > 1 then
     Result := Chr(Ord('A') + ACount - 1) + Chr(Ord('A') + APos - 1) + 
     IntToStr(RowID);
end;

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
  SheetCount := (Grid.ColCount div 256) + 1;
  if Grid.ColCount mod 256 = 0 then
     SheetCount := SheetCount - 1;

  BookCount := (Grid.RowCount div 65536) + 1;
  if Grid.RowCount mod 65536 = 0 then
     BookCount := BookCount - 1;

  Result := False;
  XLApp := CreateOleObject('Excel.Application');
  try
    if ShowExcel = false then
       XLApp.Visible := False
    else
       XLApp.Visible := True;
    for M := 1 to BookCount do
    begin
        XLApp.Workbooks.Add(xlWBATWorksheet);
        for N := 1 to SheetCount - 1 do
        begin
          XLApp.Worksheets.Add;
        end;
    end;
    if Grid.ColCount <= 256 then
       SheetColCount := Grid.ColCount
    else
       SheetColCount := 256;
    if Grid.RowCount <= 65536 then
       SheetRowCount := Grid.RowCount
    else
       SheetRowCount := 65536;

    for M := 1 to BookCount do
    begin
        for N := 1 to SheetCount do
        begin
          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);
          XLApp.Workbooks[M].Worksheets[N].Range[RefToCell(1, 1), RefToCell(SheetRowCount,
            SheetColCount)].Select;
          XLApp.Selection.NumberFormat := '@';
          XLApp.Workbooks[M].Worksheets[N].Range['A1'].Select;
          Sheet := XLApp.Workbooks[M].WorkSheets[N];
          Sheet.Range[RefToCell(1, 1), RefToCell(SheetRowCount,SheetColCount)].Value := Data;
        end;
    end;
    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(SaveFileName);
      end;
      Result := True;
    except
    end;
  finally
    if (not VarIsEmpty(XLApp)) and (ShowExcel = false) then
    begin
      XLApp.DisplayAlerts := False;
      XLApp.Quit;
      XLAPP := Unassigned;
      Sheet := Unassigned;
    end;
  end;
end;

SaFu 4. Jun 2007 10:59

Re: Sting in excel
 
Hi habe immernoch das Problem mit dem Excel und StringGrid

:-D

Vielleicht sollte ich noch erwähnen das ich immoment das so speicher
Delphi-Quellcode:
procedure TForm7.GridSpeichern;
var FileStream: TMemoryStream;
    Grid :TFileName;
    x, y, row, col,leng :Word;
    st :string;
begin
 Label3.Caption:= ComboBox1.Text + ComboBox4.Text;
 begin

  FileStream:= TMemoryStream.Create; //MemoryStream erzeugen

    col:= StringGrid1.ColCount -1; //Ab Spalte 0
    row:= StringGrid1.RowCount -1; //Ab Zeile 0

    FileStream.Write(row, SizeOf(Word)); // Zeilen zum Schreiben öffnen
    FileStream.Write(col, SizeOf(Word)); // Spalten zum schreiben öffnen

    for x:= 0 to row do //Alle Spalten in die Variable übergeben
      for y:= 0 to col do //Alle Zeilen in die Variable übergeben
       begin
        st:= StringGrid1.Cells[y,x];
        leng:= length(st);

        FileStream.Write(leng, SizeOf(Word));
        FileStream.Write(st[1], leng);
       end;
   Grid:= ExtractFilePath(ParamStr(0))+'Vertretungspläne\KW_'+(IntToStr(WeekOfTheYear(DateTimePicker1.DateTime)))+'_'+(IntToStr(yearof(DateTimePicker1.DateTime)))+'\'+ ComboBox4.Text+'.txt';
  FileStream.SaveToFile(Grid);
  FileStream.Free;
 end;
end;
Kann man den code jetzt nicht irgenwie umbauen und einfach als .xls speichern?

leddl 4. Jun 2007 11:08

Re: Sting in excel
 
:gruebel: Na du hast den Code für den Export zu Excel doch gepostet, da ist doch genau drin, was du brauchst :gruebel:
Delphi-Quellcode:
function StringGridToExcelSheet(Grid: TStringGrid; SheetName, FileName: string; ShowExcel: Boolean): Boolean;
Der Funktionsname und die Parameter sprechen doch eigentlich für sich selber, oder? Hast du den Code überhaupt mal angeschaut? :gruebel:

SaFu 4. Jun 2007 11:13

Re: Sting in excel
 
Ja angeschaut schon aber wenn ich erlich bin verstehen ich ihn nicht ganz.

Weis zwar was er macht aber irgenwie stehe ich auf dem Schlauch diesen cod mit einem Button auszufüren

leddl 4. Jun 2007 11:18

Re: Sting in excel
 
Zitat:

Zitat von fuknersascha
Ja angeschaut schon aber wenn ich erlich bin verstehen ich ihn nicht ganz.

Verstehen is ja erstmal nebensächlich, mir ging es erstmal darum, dass du den Code nicht gelesen haben kannst, sonst wärst du ja über den Methodennamen gestolpert :zwinker:
Zitat:

Zitat von fuknersascha
Weis zwar was er macht aber irgenwie stehe ich auf dem Schlauch diesen cod mit einem Button auszufüren

Naja, du hast die Methode, du hast die Parameter... Dann ruf doch die Methode einfach mit den richtigen Parametern auf ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:28 Uhr.
Seite 1 von 2  1 2      

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