DELPHI 里把一时间类型的数据输入到stringgrid中,就变成一小数了,怎么回事?

RT,我EXCEL里有时间数据,如6:53:06,一输入到stringgrid中,就变成了.286875,18:45:00,输进去,就成了.78125,貌似是当前时间除以... RT,我EXCEL里有时间数据,如6:53:06,一输入到stringgrid中,就变成了.286875,
18:45:00,输进去,就成了.78125,貌似是当前时间除以24得到的,我能不能不让它显示为小数,而直接以时间为string显示出来。
展开
 我来答
遒劲且威武的小白桦s
2012-03-26 · TA获得超过115个赞
知道小有建树答主
回答量:160
采纳率:0%
帮助的人:189万
展开全部
取出来以后先转换成string类型 再写到stringgrid里面去
mytimestr := format('hh:mm:ss', sourcetime);

mytimestr 为 string
sourcetime 为取出来的时间 tdatetime类型
更多追问追答
追问
mytimestr := format('hh:mm:ss', sourcetime);这句编译错误
写成mytimestr := formatdatetime('hh:mm:ss', sourcetime);可以
问题是现在我的sourcetime是vardispatch类型,从EXCEL里读出来的,而且EXCEL里有几种数据,还有数字,不可能全部用ormatdatetime吧,那样会出问题的。
追答
函数我写混了  不过你自己改对了   excel里面存放时间的应该都是同一列的吧   你可以先进行判断的   符合条件的再转
汪_汪_汪_wang
2012-03-26
知道答主
回答量:9
采纳率:0%
帮助的人:6.5万
展开全部
你把0.286875用TimeToStr(0.286875)就可以得到6:53:06
追问
问题是我不知道取出来的是什么类型的数据,怎么用Timetostr,如果不是小数,则会出错。
追答
procedure TForm1.Button1Click(Sender: TObject);
var
i, j, iCount: Integer;
begin
iCount := 0;
ExcelApplication1.Connect;
iCount := ExcelApplication1.Workbooks.Count;
if OpenDialog1.Execute then
begin
try
ExcelApplication1.Workbooks.Open(OpenDialog1.FileName, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, 0);
except
exit;
end;
end else
begin
exit;
end;
ExcelWorkBook1.ConnectTo(ExcelApplication1.Workbooks[iCount+1]);
ExcelWorkSheet1.ConnectTo(ExcelWorkBook1.Worksheets[1] as _Worksheet);
StringGrid1.RowCount := ExcelWorkSheet1.UsedRange[0].Rows.Count;
StringGrid1.ColCount := ExcelWorkSheet1.UsedRange[0].Columns.Count;
for i := 0 to ExcelWorkSheet1.UsedRange[0].Rows.Count - 1 do
for j := 0 to ExcelWorkSheet1.UsedRange[0].Columns.Count - 1 do
begin
if VarToStr(ExcelWorkSheet1.Cells.Item[i + 1, j + 1].NumberFormat) = 'h:mm:ss' then
StringGrid1.Cells[j, i] := TimeToStr(StrToFloat(ExcelWorkSheet1.Cells.Item[i + 1, j + 1].Value)) else
StringGrid1.Cells[j, i] := ExcelWorkSheet1.Cells.Item[i + 1, j + 1].Value;
end;
ExcelWorkBook1.Close;
if iCount = 0 then
ExcelApplication1.Quit;
ExcelWorkSheet1.Disconnect;
ExcelWorkBook1.Disconnect;
ExcelApplication1.Disconnect;
end;
希望对你有帮助
ExcelWorkSheet1.Cells.Item[i + 1, j + 1].NumberFormat可以判断excel中的数字格式
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式