none
CSV파일로 데이터를 읽어오는것에 관하여 질문이 있습니다. RRS feed

  • 질문

  • csv파일에 4개 칼럼이 있는데  이csv파일의 4개의 칼럼중 1,2칼럼만 리스트피커로 보여줄수있는 방법이 있을까요?
    2019년 11월 26일 화요일 오후 12:01

모든 응답

  • 이런 경우 ODBC 텍스트 드라이버를 위한 간단한 솔루션 인 ADO.Net을 사용할 수 있습니다.
    첫 번째 스텝은 ADO.Net을 사용하여 CSV 파일에 연결 한 다음 어뎁터를 사용하여 데이터를 가져오는 것입니다. SQL statement에 원하는 데이터 열을 지정한 후 Fill 메소드를 사용하여 DataTable dt에 데이터를 추가합니다.
    두 번째 스텝은 데이터를 반복적으로 가져 오는 것을 피하기 위해 listview control의 모든 데이터를 지우는 것입니다. dt를 사용하여 listview 컨트롤에 열을 추가 한 다음 행을 기준으로 데이터를 추가합니다.

    구체적인 구현 코드는 아래와 같습니다.

    Imports System.Data.OleDb
    Imports System.IO
    
    Public Class Form1
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim file As New FileInfo("D:\student.csv")
            Dim connectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Text;Data Source=" & file.DirectoryName
    
            Using conn As New OleDbConnection(connectionString)
                conn.Open()
                Dim cmd As New OleDbCommand("SELECT sno,sname FROM " & file.Name, conn)
                Dim adapter As New OleDbDataAdapter
                adapter.SelectCommand = cmd
                Dim dt As New DataTable
                adapter.Fill(dt) '어댑터는 SQL statement을 실행하여 얻은 결과 세트를 가지고 fill 메소드를 사용하여 데이터 세트 dt에 데이터를 채웁니다. 이때 dt는 데이터 세트의 데이터를 가지고 있습니다.
    
                Dim RowCount, ColCount, i, j As Integer
                Dim dr As DataRow = Nothing
                If dt Is Nothing Then Return
                RowCount = dt.Rows.Count 'dt해수를 가져옴
                ColCount = dt.Columns.Count 'dt열수를 가져옴
    
                '데이터 일관성을 보장하기 위해 추가하기 전에 listview1을 지웁니다.
                ListView1.Clear()
                ListView1.AllowColumnReorder = True
                ListView1.GridLines = True
    
                'listview에 열을 추가합니다
                For i = 0 To ColCount - 1
                    ListView1.Columns.Add(dt.Columns(i).Caption.Trim())
                Next
    
                '행에 따라 열을 추가합니다
                If RowCount = 0 Then Return '데이터가 없는경우 return
                For i = 0 To RowCount - 1 '데이터가 있으면 추가
                    dr = dt.Rows(i)
                    ListView1.Items.Add(dr(0).ToString().Trim())
    
                    For j = 1 To ColCount - 1
                        ListView1.Items(i).SubItems.Add(CStr(dr(j).ToString().Trim()))
                    Next
                Next
            End Using
        End Sub
    End Class

    실행 결과는 아래와 같습니다.

    MSDN Community Support Ricky

    다른 커뮤니티 멤버에게 도움이 될 수 있게 문제를 해결 한 답변을 '답변으로 표시'를 클릭하시고 그렇지 않은 경우 '답변으로 표시 취소'를 클릭하시기 바랍니다. MSDN 서포트에 대한 의견이나 불만이 있을 경우 MSDNFSF@microsoft.com 으로 연락하시기 바랍니다.

    2019년 11월 28일 목요일 오전 10:06
    중재자