如何在VB.NET中将Excel表头非标准日期(如“5 Sep”)转换为dd/mm格式
VB.NET 实现Excel表头非标准日期格式转换方案
前置准备
- 引入必要命名空间,用于解析英文月份缩写:
Imports System.Globalization
核心转换方法
新增专用转换函数,处理"日+英文月份缩写"格式的字符串转换:
' 输入类似"5 Sep"的非标准日期字符串,输出"05/09"格式,解析失败返回原值 Private Function ConvertDateStr(inputStr As String) As String Dim enCulture As CultureInfo = CultureInfo.GetCultureInfo("en-US") Dim parsedDate As DateTime inputStr = inputStr.Trim() ' 匹配单/双位日期+3位英文月份缩写的格式 If DateTime.TryParseExact(inputStr, "d MMM", enCulture, DateTimeStyles.None, parsedDate) Then Return parsedDate.ToString("dd/MM") End If Return inputStr End Function
集成到现有业务逻辑
修改你原有代码中的遍历循环部分,新增转换逻辑:
Try xlWorkBook = xlApp.Workbooks.Open(result2) xlWorkSheet = xlWorkBook.Worksheets("Attendances") xlWorkBook.Activate() If xlWorkSheet.Cells(1, 1).Value = "Course" Then xlWorkSheet.Rows(1 & ":" & 3).Delete() xlWorkBook.Save() For t As Integer = 6 To 75 Dim cellVal As String = Convert.ToString(xlWorkSheet.Cells(1, t).Value) If Not String.IsNullOrEmpty(cellVal) Then ' 原有截取逻辑保留 If cellVal.Length > 25 AndAlso InStr(cellVal, " 20") > 0 Then cellVal = Microsoft.VisualBasic.Left(cellVal, InStr(cellVal, " 20") - 1) End If ' 新增日期格式转换 cellVal = ConvertDateStr(cellVal) ' 回写单元格 xlWorkSheet.Cells(1, t).Value = cellVal End If Next xlWorkBook.Save() xlWorkBook.Close() End If xlApp.Quit() Catch ex As Exception ' 可按需打印ex.Message排查错误 lblPath.Text = "Exception" End Try
注意事项
- 如果存在带点的月份缩写格式(如
Sep.),可修改TryParseExact的格式参数为New String() {"d MMM", "d MMM."}支持多格式匹配 - 解析日期时默认取当前系统年份,仅输出月日的场景下不会影响最终结果
- 建议先小范围测试转换效果,确认符合预期后再全量执行
内容的提问来源于stack exchange,提问作者user8226676
相关产品推荐
相关产品推荐

