Einzelnen Beitrag anzeigen

David Martens

Registriert seit: 29. Sep 2003
205 Beiträge
 
Delphi XE Enterprise
 
#1

Excel 2010: Datum eintragen

  Alt 18. Okt 2010, 09:45
Ich benutzt folgenden Code zum Eintragen von Daten in Excel:

Delphi-Quellcode:
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);
Mal wieder eine neue Excelversion und nur Probleme.

Bis Excel 2007 geht alles gut: (FExcelServer.Version.Major = 11)
Der Vorteil mit AData.DataSet.Fields.Fields[iCol].AsDateTime; zu arbeiten liegt auf der Hand; damit bin ich unabhängig was das Format angeht.
Leider klappt das nicht mehr mit Excel 2010: (FExcelServer.Version.Major = 14).

Kann mir jemand sagen warum, wie ich das beheben kann?

Danke David
  Mit Zitat antworten Zitat