2016-09-12 2 views
0

텍스트 파일을 읽고 쓰는 것이 처음입니다. 파일을 읽고 각 셀의 데이터를 해당 배열에 저장해야합니다.텍스트 파일 데이터를 읽고 vb.net을 사용하여 dataGridView에 표시하는 방법

내 텍스트 파일에 "|"문자가 있습니다. 열 구분 기호 용. 첫 번째 열은 문자열 기반이고 두 번째 및 세 번째 열은 정수 기반입니다. dataGridView에는 두 번째 열과 세 번째 열의 합계 중 두 번째 열의 비율 인 네 번째 열이 있습니다.

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

나는, 그러나, 여전히 오류가 포함되지 않은 눈치 나는 코드를 변경했습니다. 나는 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)'와 함께 정렬했다. –

관련 문제