You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在打印DataGridView时移除日期列中的时间信息

解决DataGridView打印日期列带时间的问题

问题根源

DataGridView界面上日期列只显示日期,是因为你给该列设置了显示格式(比如通过设计器或代码设置DefaultCellStyle.Format = "d"),但打印逻辑直接读取了单元格的原始值(完整的DateTime对象,包含时间部分),没有应用界面的格式化规则,所以打印时会输出日期+时间。

两种可行解决方案

方案1:直接读取界面格式化后的文本

打印时不要取单元格的Value属性,改用FormattedValue——这个属性就是DataGridView界面上实际显示的文本,已经包含了你设置的日期格式。

修改打印代码中读取单元格值的部分:

' 替换原读取Value的代码
Dim displayText As String = DataGridView1.Rows(rowIndex).Cells(colIndex).FormattedValue.ToString()
' 用displayText进行打印输出

方案2:手动格式化日期值

如果需要对打印格式做额外调整,可以判断单元格值是否为DateTime类型,手动转换为指定的日期格式:

Dim cell = DataGridView1.Rows(rowIndex).Cells(colIndex)
Dim printText As String

If cell.Value IsNot Nothing AndAlso TypeOf cell.Value Is DateTime Then
    ' 自定义日期格式,比如"yyyy-MM-dd"或"d"(短日期)
    printText = CDate(cell.Value).ToString("yyyy-MM-dd")
Else
    printText = If(cell.Value IsNot Nothing, cell.Value.ToString(), "")
End If
' 输出printText到打印内容

额外提示

如果你的数据绑定代码是直接绑定DataTable或数据源的日期列,确保数据源中的日期值本身是否需要保留时间——但即使保留时间,只要打印时用上述两种方法处理,就能只输出日期部分。

内容的提问来源于stack exchange,提问作者Karl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 17:01:07