Beispiel:
Code: Alles auswählen
"04.01.2017 08:05:00";"Artikel1";"150";"131.2";"5";"0.2";"-793.6"
Ich versuche es in etwa so
Code: Alles auswählen
OldFormat, MyFormat : TFormatSettings;
.......
sWorkbookSource1.Worksheet.Clear;
// store old format and change format for import
OldFormat:= sWorkbookSource1.Workbook.FormatSettings;
MyFormat.DecimalSeparator:='.';
MyFormat.ThousandSeparator:= ' ';
MyFormat.TimeSeparator:=':';
MyFormat.DateSeparator:='.';
MyFormat.ShortDateFormat:='dd.mm.yy';
sWorkbookSource1.Workbook.FormatSettings := MyFormat;
.....
sWorkbookSource1.Worksheet.WriteCellValueAsString(j, i, Q_Daten.Fields[i].AsString);
.....
// Restore Settings
sWorkbookSource1.Workbook.FormatSettings:= OldFormat;
Die Systemeinstellungen sind Deutsch und er Import ist bei den Zahlen Englisch und beim Datum Europäisch. Die Daten werden von der Automatik ja sehr sicher erkannt und zugewiesen. Beim Datum habe ich noch ein wenig Probleme. Sie werden im SpreadSheet Grid angezeigt, allerdings habe ich Probleme die optische Darstellung dort richtig zu haben beim Datum/Zeit, da habe ich die optimalen Einstellungen noch nicht gefunden.
Ich habe mir schon überlegt die procedure TsWorksheet.WriteCellValueAsString(ACell: PCell; AValue: String); zu erweitern, so das ich auch NUR für die Eingabe das Format angeben kann. Denn in der Procedure ist das ja sauber getrennt, nur halt von den aktuellen Einstellung abgeleitet.
Gibt es eine bessere Idee wie man das Stabil hinbekommen kann ?
Andreas