我已经在我的程序中写入了一个导出到excel函数,该函数也与导入程序一致。日期格式在导出到Excel时更改
导入程序正在运行一些验证检查,但其中一些验证检查失败,因为Excel工作表格将它们格式化为MM/dd/yyyy,但其中大多数存储为dd/MM/yyyy。
查看我的导出程序后,我可以看到在导出之前,网格中的日期都格式正确为dd/MM/yyyy,所以问题不在这里。
打开导出的Excel文件时,可以看到一些日期存储为MM/dd/yyyy,但是。
我的电脑上的区域设置是正确的,设置为英国,甚至在检查列上的Excel格式后,我可以看到它设置为dd/MM/yyyy。
那么,有什么可能会出错?为什么有些导出不同?
为网格中看到的值(正确的格式 - 参见上面两行“率的一个开始”,2016年1月6日)
代码在出口常规
Dim formatRange As Excel.Range
formatRange = xlWorksheet.Range("F2", "F99000")
formatRange.NumberFormat = "dd/MM/yyyy"
formatRange = xlWorksheet.Range("I1", "I99000")
formatRange.NumberFormat = "dd/MM/yyyy"
formatRange = xlWorksheet.Range("J1", "J99000")
formatRange.NumberFormat = "dd/MM/yyyy"
formatRange = xlWorksheet.Range("M1", "M99000")
formatRange.NumberFormat = "dd/MM/yyyy"
formatRange = xlWorksheet.Range("N1", "N99000")
formatRange.NumberFormat = "dd/MM/yyyy"
formatRange = xlWorksheet.Range("Q1", "Q99000")
formatRange.NumberFormat = "dd/MM/yyyy"
For k As Integer = 1 To dgvExport.Columns.Count
xlWorksheet.Cells(1, k) = dgvExport.Columns(k - 1).HeaderText
Next
Dim eStr As String = ""
Dim nStr As String = ""
Me.Cursor = Cursors.WaitCursor
For i = 0 To dgvExport.RowCount - 1
For j = 0 To dgvExport.ColumnCount - 1
Try
eStr = Trim(dgvExport(j, i).Value)
nStr = eStr.Replace(vbCr, "").Replace(vbLf, "")
xlWorksheet.Cells(i + 2, j + 1) = nStr
Catch
xlWorksheet.Cells(i + 2, j + 1) = dgvExport(j, i).Value
End Try
Next
Next
Excel文件我出口(注意一些日期被DD/MM,而有些是MM/DD)
确保将日期作为日期数据类型传递给Excel。目前,您将它们作为字符串传递给我,并且Excel OM会说美式语言,因此希望在转换为真正的Excel日期时使用m/d/y顺序。 – jkpieterse
@jkpieterse我怎么会把它们作为日期传递?这很奇怪,有些是在正确的格式,但不是全部 – David
@大卫不奇怪。 VBA正在使用美国(MDY)格式进行转换。您认为*的日期正确的是前两位数字大于12的文本字符串。其他人已被错误地转换 - 看第一行 - 由于VBA根据美国设置转换您的数据,“1-jun-16”与“6-Jan-16”。不确定'vb.net'日期与字符串。 –