![]() |
DataSet in Excel exportieren, Integer immer 64 als Wert
Hallo zusammen,
ich versuche mich gerade an Delphi XE2. Mein Funktion für den Export in Excel aus einem DataSet heraus hat unter Delphi 5 einwandfrei funktioniert. Ich Speichere die Daten in ein ExcelArray : OLEVariant; Wenn ich dieses Array nun an Excel übergebe erscheint immer in Zahlenfeldern "64". Hat jemand eine Idee? Vielen Dank Eppos |
AW: DataSet in Excel exportieren, Integer immer 64 als Wert
Zeig mal etwas Code.
|
AW: DataSet in Excel exportieren, Integer immer 64 als Wert
Delphi-Quellcode:
procedure SetExcelTable( vDS : TDataSet; vForm : TForm);
const xlWBATWorksheet = -4167; xlContinuous = 1; var XLApp: Variant; XLWorkbook: Variant; XLSheet: Variant; XLArrayData : OLEVariant; XLCellBegin: Variant; XLCellEnd: Variant; XLRange: Variant; iColumnsCount: Integer; iRowsCount: Integer; i: Integer; j: Integer; begin try XLApp.DisplayAlerts := False; Screen.Cursor := crHourGlass; try XLWorkbook := XLApp.Workbooks.Add(xlWBATWorkSheet); XLSheet := XLWorkbook.Sheets[1]; vDs.DisableControls; iRowsCount := vDS.RecordCount + 1; iColumnsCount:= vDS.FieldCount; XLArrayData := VarArrayCreate([1, iRowsCount, 1, iColumnsCount], varVariant); vDS.First; for i := 2 to iRowsCount do begin for j:= 1 to iColumnsCount do case vDS.Fields.Fields[j - 1].DataType of ftString : XLArrayData[i, j] := vDS.Fields.Fields[j - 1].AsString; ftInteger : XLArrayData[i, j] := vDS.Fields.Fields[j - 1].AsInteger; ftFloat, ftCurrency : XLArrayData[i, j] := vDS.Fields.Fields[j - 1].AsFloat; ftDate,ftDateTime : begin XLArrayData[i, j] := FormatDateTime( 'dd.mm.yyyy hh:mm:ss', vDS.Fields.Fields[j - 1].AsDateTime ); XLArrayData[i, j] := StringReplace( XLArrayData[i, j], ' 00:00:00', '', [rfReplaceAll] ); end; else ; end; vDS.Next; end; XLCellBegin := XLSheet.Cells[1, 1]; XLCellEnd := XLSheet.Cells[iRowsCount, iColumnsCount]; XLRange := XLSheet.Range[XLCellBegin, XLCellEnd]; XLRange.NumberFormat := '@'; XLRange.Value := XLArrayData; XLRange.Borders.LineStyle := xlContinuous; for i:= 1 to iColumnsCount do XLSheet.Columns[i].AutoFit; XLApp.Visible := True; vDs.EnableControls; finally vDs.EnableControls; vForm.Enabled:= True; Screen.Cursor := crDefault; XLApp.DisplayAlerts:= True; VarClear(XLArrayData); end; except vDs.EnableControls; XLApp.Quit; end; end; |
AW: DataSet in Excel exportieren, Integer immer 64 als Wert
Es gibt nicht nur ftInteger sondern auch noch ftSmallint, ftWord, ftLargeint.
Delphi-Quellcode:
for j:= 1 to iColumnsCount do
case vDS.Fields.Fields[j - 1].DataType of ... else // Zelle sollte sinnvollen Wert erhalten // ohne Zuweisung ist XLArrayData[i, j] undefiniert XLArrayData[i, j] := 'unsupported datatype'; end; |
AW: DataSet in Excel exportieren, Integer immer 64 als Wert
@shima
Ich habe die Else-Anweisung hinzugeüfgt, dort springt er überhaupt nicht rein. |
AW: DataSet in Excel exportieren, Integer immer 64 als Wert
Zitat:
Dann verwende mal eine Zwischenvariable für das Feld damit du besser debuggen kannst
Delphi-Quellcode:
Zusätzlich solltest du den Datentyp Variant überall durch OleVariant ersetzen.
var
f:TField; for j:= 1 to iColumnsCount do begin f := vDS.Fields.Fields[j - 1]; case f.DataType of ftString : XLArrayData[i, j] := f.AsString; ftInteger : XLArrayData[i, j] := f.AsInteger; ... |
AW: DataSet in Excel exportieren, Integer immer 64 als Wert
der Bösewicht ist
XLRange.NumberFormat := '@'; versuch es mal mit XLRange.NumberFormat := '#.##0,00'; |
AW: DataSet in Excel exportieren, Integer immer 64 als Wert
Zitat:
Das ist schon mal ein grundlegender Fehler. |
AW: DataSet in Excel exportieren, Integer immer 64 als Wert
Danke an Shmia und Bummi.
Ich habe die Zeile XLRange.NumberFormat := '@'; einfach auskommentiert :-D und jetzt geht es! |
AW: DataSet in Excel exportieren, Integer immer 64 als Wert
Da Excel wie seine Schwester Word etwas zickig ist versuch es mal so:
Delphi-Quellcode:
Gruß
excel.activesheet.Cells.NumberFormat := '@';
K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:20 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