Я написал экспорт в excel-функцию в свою программу, что также совпадает с программой импорта.Формат даты Изменение при экспорте в Excel
В программе импорта выполняется проверка проверки, но некоторые из них не работают, потому что лист Excel форматирует их как MM/dd/yyyy, однако большинство из них хранятся как dd/MM/yyyy.
После просмотра в моей программе экспорта, я вижу, что в сетке, перед экспортом, даты все правильно отформатированы как dd/MM/yyyy, поэтому проблема здесь отсутствует.
При открытии экспортированного файла Excel я вижу, что некоторые даты хранятся как MM/dd/yyyy.
Региональные настройки на моем компьютере правильные, установлены в Великобритании и даже после проверки формата Excel в столбце, я вижу, что он установлен на dd/MM/yyyy.
Итак, что это может произойти неправильно? Почему некоторые экспортируются по-разному?
значения, как видно в сетке (Правильный формат - см 2 верхних строк 'Rate One Start', 01/06/2016)
Код в экспорте рутинного
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 Я экспортировал (Обратите внимание на некоторые из дат дд/мм, в то время как некоторые из них ММ дд /)
Обязательно укажите даты в виде даты в Excel. В настоящее время вы передаете их как строки, которые я думаю, и Excel OM говорит по-американски и, следовательно, ожидает порядка m/d/y при преобразовании в настоящие даты Excel. – jkpieterse
@jkpieterse Как я могу пропустить их как даты? Странно, что некоторые из них находятся в правильном формате, но не все – David
@David Не странно. VBA конвертируется в формате US (MDY). Даты, которые вы считаете правильным, действительно являются текстовыми строками с первыми двумя цифрами> 12. Другие были неверно преобразованы - посмотрите на первую строку - '1-jun-16' vs' 6-Jan-16' из-за того, что VBA конвертирует ваши данные в соответствии с настройками США. Не уверен насчет 'vb.net' date vs string. –