![]() |
Excel 2010: Datum eintragen
Ich benutzt folgenden Code zum Eintragen von Daten in Excel:
Delphi-Quellcode:
Mal wieder eine neue Excelversion und nur Probleme.
var
Data : OleVariant; ... begin ... Data := VarArrayCreate([0, AData.DataSet.RecordCount - 1, 0, i - 1], varVariant); ... if (FExcelServer.Version.Major >= 11) and (iCol = iDatum) then begin if (FExcelServer.Version.Major >= 14) then begin // TODO: Umwandlung ???? // Data[iRow, iCol - i] := StrToDateTime(AData.DataSet.Fields.Fields[iCol].AsDateTime; end else Data[iRow, iCol - i] := AData.DataSet.Fields.Fields[iCol].AsDateTime; end else begin sCell := Trim(AData.DataSet.Fields.Fields[iCol].AsString); sCellTest := StringReplace(sCell, '.', '', [rfReplaceAll]); if TryStrToFloat(sCellTest, fCellTest) then begin if (FExcelServer.Version.Major >= 11) and (Pos(',', sCell) > 0) then begin try sCell := StringReplace(sCell, '.', '#', [rfReplaceAll]); sCell[Pos(',', sCell)] := '.'; sCell := StringReplace(sCell, '#', ',', [rfReplaceAll]); Data[iRow, iCol - i] := sCell; except Data[iRow, iCol - i] := Trim(AData.DataSet.Fields.Fields[iCol].AsString); end; end else begin Data[iRow, iCol - i] := Trim(AData.DataSet.Fields.Fields[iCol].AsString); end; end else begin Data[iRow, iCol - i] := Trim(AData.DataSet.Fields.Fields[iCol].AsString); end; end; ... FExcelServer.WriteRange(FStartRow, FStartCol, AData.DataSet.RecordCount, Data); Bis Excel 2007 geht alles gut: (FExcelServer.Version.Major = 11) Der Vorteil mit
Delphi-Quellcode:
zu arbeiten liegt auf der Hand; damit bin ich unabhängig was das Format angeht.
AData.DataSet.Fields.Fields[iCol].AsDateTime;
Leider klappt das nicht mehr mit Excel 2010: (FExcelServer.Version.Major = 14). Kann mir jemand sagen warum, wie ich das beheben kann? Danke David |
AW: Excel 2010: Datum eintragen
Ich hab mich mal von einem Tutorial auf Youtube
![]()
Delphi-Quellcode:
vobei Jahr(), Monat(), Tag() das Entsprechende zurückgibt.
if (iCol = iDatum) then
begin Data[iRow, iCol - i] := '=date(' + IntToStr(Jahr(AData.DataSet.Fields.Fields[iCol].AsDateTime)) + ',' + IntToStr(Monat(AData.DataSet.Fields.Fields[iCol].AsDateTime)) + ',' + IntToStr(Tag(AData.DataSet.Fields.Fields[iCol].AsDateTime)) + ')'; mit Excel 2003 geht es schonmal, die anderen muß ich noch testen. Edit: Geht doch nicht mit anderen Versionen. Eigentlich wäre ';' statt ',' richtig, aber das geht in keiner Version. Man ist das SCH... |
AW: Excel 2010: Datum eintragen
Hallo David,
wir verwenden immer noch Excel 2003 und ich weiß nicht, ob Dir das weiterhilft: Ich übergebe ein Datum in der Form: excel.cells[row,col] := FormatDateTime ('dd.mm.yyyy',mydate); Viele Grüße Ines |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:40 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