将导出的值(时间)从datagridview转换为excel
我有一个datagridview,其中包含从表中检索的员工的大量时间输入和超时记录。现在我可以将数据从datagridview导出到excel文件,但我遇到了一个问题将导出的值(时间)从datagridview转换为excel,excel,ms-access,datagridview,vb.net-2010,Excel,Ms Access,Datagridview,Vb.net 2010,我有一个datagridview,其中包含从表中检索的员工的大量时间输入和超时记录。现在我可以将数据从datagridview导出到excel文件,但我遇到了一个问题 列time in和time out的时间格式与“9:00 AM”非常相似,但当导出到excel时,它会变成“12/30/1899 9 9:00:00 AM”。这也是我在datagridview中遇到的第一个问题,但我使用DGV.Columns(1.DefaultCellStyle.Format=“t”来解决这个问题。有人教我没有问
列time in和time out的时间格式与“9:00 AM”非常相似,但当导出到excel时,它会变成“12/30/1899 9 9:00:00 AM”。这也是我在datagridview中遇到的第一个问题,但我使用DGV.Columns(1.DefaultCellStyle.Format=“t”来解决这个问题。有人教我没有问题。日期1899-12-30是零值日期,如果没有给出日期,时间值将始终属于零值日期 因此,只需在显示值时应用时间格式即可 附录 似乎,如果您仅直接在Excel中输入时间,它将使用零值日期1900-01-01 因此,在导出时,添加两天,如:
Dim t As TimeSpan
Dim d As DateTime
t = New TimeSpan(14, 34, 0) ' Your cell value.
d = New DateTime(1900, 1, 1).AddTicks(t.Ticks)
然后导出d。已解决!我使用这个代码
cellvalue = DGVResult.Rows(i).Cells(j).Value.ToString
Date.Parse(cellvalue).ToString("hh:mm tt").ToString
我使用循环捕捉要格式化的单元格
谢谢你的提示 这与访问有什么关系?@ErikvonAsmuth我使用访问作为数据库。我不知道解决方案可能在dbso中。从datagridview导出时,如何在excel上应用时间格式?您不能应用格式,但可以尝试更改值。请参见编辑。但这会将时间保留为文本,而不是日期/时间值。应该尽量避免将日期和时间作为文本。但它解决了我的问题,将时间值导出到excel单元格,而不包含从“1899/01/01 09:00 AM”到“09:AM”的不需要的数据