如何在打印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
相关产品推荐
相关产品推荐

