Hola a todos,
tengo un problema con las fechas al realizar una exportación de datos de una rejilla a una hoja Excel. La carga de datos en el Excel la hago de la siguiente forma:
Código:
var
Excel, WorkBook, WorkSheet: Variant;
i,j:Integer;
Filename:String;
WBk, WS: OleVariant;
columna:Integer;
begin
for i := 1 to grid1.RowCount - 1 do
for j := 0 to grid1.ColCount - 1 do
begin
columna:=columna+1;
//Cargo el String que hay en el grid en la celda correspondiente
WorkSheet.Cells[i + 1, columna] := grid1.Cells[j, i];
end;
WorkBook.SaveAs(Filename);
Excel := GetActiveOleObject('Excel.Application');
Excel.Visible:=True;
WBk := Excel.WorkBooks.Open(Filename);
WS := WBk.Worksheets.Item['Listado exportado'];
WS.Activate;
end;
El problema viene en la línea:
WorkSheet.Cells[i + 1, columna] := g_infras.Cells[j, i];
Si por ejemplo el valor de grid1.Cells[j,i] es '06/02/2008' (formato dd/mm/yyyy) el valor que me inserta en Excel es '02/06/2008', es decir, le da la vuelta al mes y al día y lo pone en el formato mm/dd/yyyy. De alguna forma interpreta que el String que le paso es una fecha y le aplica un formato para escribirlo en la hoja Excel
La única solución que he encontrado de momento es no pasarle '06/02/2008' sino pasarle '06\02\2008', es decir, parece que con las barras invertidas no lo interpreta como una fecha y deja el String como está.
¿Alguien sabe por qué ocurre esto y cómo se puede solucionar?
Un saludo y muchas gracias.