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显示出来。 展开
18:45:00,输进去,就成了.78125,貌似是当前时间除以24得到的,我能不能不让它显示为小数,而直接以时间为string显示出来。 展开
2个回答
展开全部
取出来以后先转换成string类型 再写到stringgrid里面去
mytimestr := format('hh:mm:ss', sourcetime);
mytimestr 为 string
sourcetime 为取出来的时间 tdatetime类型
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里面存放时间的应该都是同一列的吧 你可以先进行判断的 符合条件的再转
展开全部
你把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中的数字格式
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询