将导出的值(时间)从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”来解决这个问题。有人教我没有问

我有一个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”来解决这个问题。有人教我没有问题。日期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”的不需要的数据