私のプログラムでは、インポートプログラムと一致するexcel関数への書き出しを作成しました。Excelにエクスポートするときの日付形式の変更
インポートプログラムでいくつかの妥当性チェックが実行されていますが、ExcelシートがMM/dd/yyyyとして書式設定されているため、それらの一部が失敗していますが、ほとんどがdd/MM/yyyyとして保存されています。
私の輸出プログラムを見た後、私はグリッドでエクスポートする前に、日付はすべて正しくdd/MM/yyyyと書かれているので、問題はここにはありません。
エクスポートされたExcelファイルを開くと、一部の日付がMM/dd/yyyyとして保存されていることがわかります。
私のPCの地域設定は正しく、UKに設定されており、列のExcel形式を確認した後でも、dd/MM/yyyyに設定されていることがわかります。
これは間違っている可能性がありますか?なぜ、輸出されるのが違うのですか?
グリッドに見られるような値(正しいフォーマットは - 、2016年1月6日のトップ2行 'レートワンスタート' を参照してください)ルーチン輸出で
コード
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ファイル(日付のいくつかは、いくつかであるのに対し、/ MMをddをしている注目MM/DD)
日付データ型として日付をExcelに渡すようにしてください。現在、私は思っている文字列として渡しており、Excel OMはアメリカの方を話すので、実際のExcel日付に変換するときにはm/d/yの順序が必要です。 – jkpieterse
@jkpieterseどうすれば日付として渡すのですか?いくつかは正しいフォーマットであるが、すべてではないというのは奇妙だ。 – David
@David奇妙ではない。 VBAはUS(MDY)形式を使用して変換しています。あなたが思った*正しい日付は実際には最初の2桁が12を超えるテキスト文字列です。他のものは間違って変換されています - あなたのデータを米国の設定に従ってVBAに変換するため、 '1-jun-16'と' 6-Jan-16'の最初の行を見てください。 'vb.net'の日付と文字列については不明です。 –