Страница 1 из 1

Чтение из Excel

Добавлено: 26 май 2010, 11:24
s2176
Добрый день!
У меня есть xls-файл, где данные в ячейке записаны в формате [ч]:mm, т.е. по сути - часы:минуты. Я не могу в интерфейсе достать эти данные :sad:
Читаю так (пробую это делать в переменные типа string и time):
....
var pt: time;
var _str: string;
...
xlGetCellValue(_row,col,pt);
logStrToFile('log.log',timeToStr(pt,'HH:MM:SS'));
xlGetCellValue(_row,col,_str);
logStrToFile('log.log',_str);
...

В логе получаю:
00:00:00
0,161111111111111
а на самом деле в ячейке - 3:52:00
Мне нужны часы и минуты отдельно.

Добавлено: 26 май 2010, 11:40
evchic
время идет в Double нужно перевести в Time
как пример можете попробывать вот такую функцию

Код: Выделить всё

function DoubleToTime(_Time:Double):Time;
{
var t1: Double;
var s1,s2,s3,s:String;

 t1:= _Time * 24 * 60 * 60;
 S1:= Longint(Trunc(t1 / 3600));
 t1:= Longint(t1) mod 3600;
 S2:= Longint(Trunc(t1 / 60));
 t1:= Longint(t1) mod 60;
 S3:= Longint(Trunc(t1));
 S:= s1+':'+s2+':'+s3+':'+'000';
 result:=StrToTime(s, 'HH:MM:SS:SSS');
};
только запятую нужно заменить на точку
0,161111111111111 = 0.161111111111111

Добавлено: 26 май 2010, 12:04
s2176
Спасибо, похоже, придется так сложно делать!

Добавлено: 26 май 2010, 12:05
Vik
Легче так:

Код: Выделить всё

function DoubleToTime(_Time:Double):Time; 
{ 
  result:=From_Sec100(_Time* 24 * 60 * 60 * 100); 
};
 

Добавлено: 26 май 2010, 12:49
evchic
Vik писал(а):Легче так:

Код: Выделить всё

function DoubleToTime(_Time:Double):Time; 
{ 
  result:=From_Sec100(_Time* 24 * 60 * 60 * 100); 
};
 
Кстати можно и так... спасибо...