2016-09-12 17 views
0

テキストファイルの読み書きには初めてです。私はファイルを読んで、各セルのデータをそれぞれの配列に格納する必要があります。テキストファイルのデータを読み取ってvb.netでdataGridViewに表示する方法

私のテキストファイルの文字は "|"です。列セパレータの場合最初の列は文字列ベースで、2番目と3番目の列は整数ベースです。 dataGridViewには4列あり、4列目は2列目と3列目の合計の2列目の割合です。

Imports System.IO 

Public Class Form1 
    Dim teamName As String = "" 
    Dim gamesWon As Integer = 0 
    Dim gamesLost As Integer = 0 
    Dim percentOfGamesWon As Double = (gamesWon + gamesLost) * gamesWon/100% 

    Sub reader() 
     Dim textLine As String = "" 
     Dim SplitLine() As String 
     Using objReader As New StreamReader("C:\Users\WORK\Documents\text files\ALE.txt") 
      Do While objReader.Peek() <> -1 
       teamName = objReader.ReadLine() 
       gamesWon = objReader.ReadLine() 
       gamesLost = objReader.ReadLine() 
       textLine = teamName & "|" & gamesWon & "|" & gamesLost & "|" & percentOfGamesWon 
       SplitLine = Split(textLine, " ") 
       Me.grdDisplay.Rows.Add(SplitLine) 
      Loop 
     End Using 
    End Sub 

    Private Sub btnDisplay_Click(sender As Object, e As EventArgs) Handles btnDisplay.Click 
     reader() 
    End Sub 
End Class 

編集:私は変数TEAMNAME、gamesWon、gamesLost、およびpercentOfGamesWon

Iが含まれていませんでした気づいたとして、私は、コードを変更するには、しかし、まだエラーが発生しています。私は、gamesWonとgamesLostの両方でobjReader.Readline()を使用することはできません。

+0

OleDBはDataTableに読み込んでDGVにバインドできます。 [Ask]を読んで[Tour]を取ってください...いくつかの詳細が欠けている以上のものがあります – Plutonix

+0

私は明らかに私の問題を言い表すのは良くありません。私はOleDBを使用していません。私はデータをDGVに表示し、これを手動で行うことになっています。 –

+0

あなたが試したことと問題の説明でそれをやっている様子を示すコードが役に立つかもしれません。 [お問い合わせ]を読んで、[ツアー]に行ってください。 – Plutonix

答えて

2

個々の変数にデータ行全体を割り当てようとしています。代わりに、ReadLineによって返された値を分割し、適切なデータ型に変換する必要があります。 Option Strict Onを追加すると、ファイルの先頭またはプロジェクトのコンパイルオプションのいずれかにも役立ちます。また、変数の範囲を最小限に抑えることもできます。クラスレベルで宣言する必要はありません。

Sub reader() 
    Using objReader As New StreamReader("C:\Users\WORK\Documents\text files\ALE.txt") 
     Do While objReader.Peek() <> -1 
      Dim line As String = objReader.ReadLine() 
      Dim splitLine() As String = line.Split("|") 
      Dim teamName As String = splitLine(0) 
      Dim gamesWon As Integer = CInt(splitLine(1)) 
      Dim gamesLost As Integer = CInt(splitLine(2)) 
      Dim percentOfGamesWon As Double = gamesWon/(gamesWon + gamesLost) * 100 
      Me.grdDisplay.Rows.Add(teamName, gamesWon, gamesLost, percentOfGamesWon) 
     Loop 
    End Using 
End Sub 
+0

それは動作します!ありがとう!もし私がpercentOfGamesWonでDGVを降順に並べ替えるなら、どうすればいいですか? –

+0

正直なところ、percentOfGamesWonでソートを実装する方法がわかりません –

+0

私は 'grdDisplay.Sort(grdDisplay.Columns(3)、ListSortDirection.Descending)でソートしました。 –

関連する問題