タイトル | : Re^3: 文字が表示できない。 |
記事No | : 11715 |
投稿日 | : 2016/08/10(Wed) 17:20 |
投稿者 | : 耳たぶ黒 |
まりもんさん返信ありがとうございます。
どうしても同じ形式のデータだけだと情報が足りないので、 CSVファイルの頭にいろいろ情報付けて使用したいんです。 プロバイダー使用で読み込む時はデータ型をString、Date型などを混在させるのは難しいのでしょうか? よく考えたら、別々に読み込むのもありですね。 例えば、最初の何行かだけString型で読み込もうとするのだったら、どうやったらデータ型の指定はできるのでしょか?
よく確認したらデータテーブルに読み込んだデータを時刻が変になってました。
元データ | 読み込んだテーブル 1、現場,山梨県都留郡 | 1、 2、日付,20160805 | 2、 ,20160805 3、 | 3、 4、0,0,0,12:10:15 | 4、0,0,0,1988/12/30 12:10:15 5、1,2,2,12:10:16 | 5、1,2,2,1988/12/30 12:10:16
全く意味がなかったですが、時刻の表示が変だったのでプロバイダーを変えてみました。 当初JETプロバイダーを使っていましたが、古いんですね。 ACE.OLEDB.12.0に変更しました。
今はStreamReaderで読見込む方が良いのかと思い、チャレンジ中です。 コンソールによる出力ウィンドウへの出力はOKでした。 これをDataTableに出力したいのですが、自分が無知過ぎてなかなかできません。 これをスパッとDataTableに移行する方法なんてないのか?なんて思ってます。 今はConsole.Writeの部分をTB.Rows.Add()に変更したのですが、上手く読んでくれません。
出力結果------------------------------------ スレッド 0x1b90 はコード 0 (0x0) で終了しました。
項目 値 現場名: 市川市三田村様邸新築工事 場 所: 市川市 試験者: 黒山 日付 2016/08/10 試験体No: 1
No 荷重 変位 時刻 FDN 0 0 0 09:37:38 0 1 0.1 0.59 09:37:38 7 2 0.0 0.61 09:37:43 21 3 0.0 0.61 09:37:47 34 4 0.0 0.62 09:37:49 40 5 0.1 0.62 09:37:51 44 6 0.1 0.62 09:37:52 48 7 0.1 0.61 09:37:54 54 8 0.0 0.62 09:37:55 59 9 0.0 0.61 09:37:57 63 10 0.0 0.62 09:37:58 67 ---------------------------------------------
プログラム------------------------------------
Dim ds As New DataSet Dim columns As Integer Dim rows As Integer Dim FolderPath As String Dim csvFileName As String Dim TB As DataTable = ds.Tables.Add '「開く」ダイアログを表示 If OpenFileDialogCsv.ShowDialog() = System.Windows.Forms.DialogResult.OK Then 'ピクチャーボックスに選択したファイル名を指定 FolderPath = IO.Path.GetDirectoryName(OpenFileDialogCsv.FileName)
csvFileName = IO.Path.GetFileName(OpenFileDialogCsv.FileName) TextBox1.Text = FolderPath & "\" & csvFileName End If Try Using sr As New System.IO.StreamReader(TextBox1.Text, System.Text.Encoding.Default) 'ファイルの最後までループ Do Until sr.Peek() = -1 Dim temp() As String temp = Split(sr.ReadLine(), ",") '※1 データの項目数が不定の場合は下記のようにして取得してください。 Dim i As Integer For i = 0 To temp.GetUpperBound(0) If i = temp.GetUpperBound(0) Then Console.WriteLine(temp(i)) Else Console.Write(temp(i) & vbTab) End If Next Loop End Using Catch ex As Exception MessageBox.Show(ex.Message) End Try
-------------------------------------------------
|