![]() |
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] |
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 |
Re: Sting in excel
Schau mal da scheint sowas zu sein;-)
![]() Gruß Muss!0 |
Re: Sting in excel
Wow - Sting in Excel!
Wo ist Excel? Wann soll das sein? Wieviel kosten die Karten? :mrgreen: |
Re: Sting in excel
*g* das hab ich garnicht gesehen hab ich total übersehen ;-)
|
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; |
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:
Kann man den code jetzt nicht irgenwie umbauen und einfach als .xls speichern?
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; |
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:
Der Funktionsname und die Parameter sprechen doch eigentlich für sich selber, oder? Hast du den Code überhaupt mal angeschaut? :gruebel:
function StringGridToExcelSheet(Grid: TStringGrid; SheetName, FileName: string; ShowExcel: Boolean): Boolean;
|
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 |
Re: Sting in excel
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz