아래에 있는 예제는 UNIX서버에 있는 txt파일을 로칼PC로 FTP를 통해
전송한후 그 파일을 불러서 행구분을 하고 "|" 구분자를 통해 항목별로 열구분을 한뒤
그리드뷰에 출력하는 예제입니다.
옆에 DB저장 버튼은 그리드뷰에 뿌려진 데이터를 DB에 저장하게 됩니다.
Form 디자인입니다. 디자인은 다소 허접하지만 나름대로 깔끔한 디자인이라 미적감각이
있으신분들은 이해하실껍니다. ^^;
아래는 VB.net 소스입니다.
Public Class QMS_JOBDAN
Dim fileReader As String
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Try
'다운로드할 ftp주소
Dim u As New Uri(System.IO.Path.Combine("ftp://@@@.@@@.@@@.@@@/aa/bb/cc/", "jobdan.txt"))
'c:에 다운로드
Dim downFile As String = System.IO.Path.Combine("C:\", "jobdan.txt")
'리퀘스트작성
Dim ftpReq As System.Net.FtpWebRequest = CType(System.Net.WebRequest.Create(u), System.Net.FtpWebRequest)
'아이디,비번입력
ftpReq.Credentials = New System.Net.NetworkCredential("아이디", "비번") 'ftp 서버 아이디,비번
'리퀘스트메소드에 다운로드
ftpReq.Method = System.Net.WebRequestMethods.Ftp.DownloadFile
ftpReq.KeepAlive = False
ftpReq.UseBinary = False
ftpReq.UsePassive = False
'리스폰스취득
Dim ftpRes As System.Net.FtpWebResponse = CType(ftpReq.GetResponse(), System.Net.FtpWebResponse)
'화일 다운로드하기위에 스트림취득
Dim resStrm As System.IO.Stream = ftpRes.GetResponseStream()
'다운로드할 화일을 엽니다.
Dim fs As System.IO.FileStream = New System.IO.FileStream(downFile, System.IO.FileMode.Create, System.IO.FileAccess.Write)
'전송
Dim buffer(1024) As Byte
While (True)
Dim readSize As Integer = resStrm.Read(buffer, 0, buffer.Length)
If (readSize = 0) Then
Exit While
End If
fs.Write(buffer, 0, readSize)
End While
fs.Close()
resStrm.Close()
Catch ex As Exception
'Throw New Exception(ex.Message)
System.Windows.Forms.MessageBox.Show(ex.ToString())
End Try
Dim tmpstr As String = My.Computer.FileSystem.ReadAllText("C:\jobdan.txt", System.Text.Encoding.GetEncoding(949)) ' 문자열 가져옴(한글이 포함된경우 깨지는 현상이 있어 인코딩을 하여 한글깨짐을 방지함.
If tmpstr <> "" Then
Dim rowArray As String() = tmpstr.Split(vbLf) ' 문자열을 잘라서 문자열 배열에 할당
Dim i As Integer
For i = 1 To rowArray.Length Step 2
Dim colArray As String() = rowArray(i).Split("|") ' 칼럼구분자로 문자열 배열 만듬
If Asc(colArray(0).Chars(0)) = 28 Then '<--총 28개 컬럼
tmpstr = colArray(0)
colArray(0) = tmpstr.Substring(1)
End If
DataGridView1.Rows.Add(colArray) 'dgvResult ' DataGridView에 Row 추가
Next i
End If
If DataGridView1.RowCount > 0 Then
Button2.Enabled = True
Else
MessageBox.Show("조회된 자료가 없습니다.")
Return
End If
End Sub
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
Try
For i = 0 To DataGridView1.RowCount - 1 Step 1
Me.QmS_JOBDANTableAdapter1.InsertQuery(DataGridView1.Item(0, i).Value.ToString,
DataGridView1.Item(1, i).Value.ToString,
DataGridView1.Item(2, i).Value.ToString,
DataGridView1.Item(3, i).Value.ToString,
DataGridView1.Item(4, i).Value.ToString,
DataGridView1.Item(5, i).Value.ToString,
DataGridView1.Item(6, i).Value.ToString,
DataGridView1.Item(7, i).Value.ToString,
DataGridView1.Item(8, i).Value.ToString,
DataGridView1.Item(9, i).Value.ToString,
DataGridView1.Item(10, i).Value.ToString,
DataGridView1.Item(11, i).Value.ToString,
DataGridView1.Item(12, i).Value.ToString,
DataGridView1.Item(13, i).Value.ToString,
DataGridView1.Item(14, i).Value.ToString,
DataGridView1.Item(15, i).Value.ToString,
DataGridView1.Item(16, i).Value.ToString,
DataGridView1.Item(17, i).Value.ToString,
DataGridView1.Item(18, i).Value.ToString,
DataGridView1.Item(19, i).Value.ToString,
DataGridView1.Item(20, i).Value.ToString,
DataGridView1.Item(21, i).Value.ToString,
DataGridView1.Item(22, i).Value.ToString,
DataGridView1.Item(23, i).Value.ToString,
DataGridView1.Item(24, i).Value.ToString,
DataGridView1.Item(25, i).Value.ToString,
DataGridView1.Item(26, i).Value.ToString,
DataGridView1.Item(27, i).Value.ToString)
Next i
MessageBox.Show("총 " + CStr(DataGridView1.RowCount) + "건 등록완료")
Button2.Enabled = False
Catch ex As Exception
MessageBox.Show(ex.Message)
Return
End Try
End Sub
End Class
이상입니다.^^
'Visual Std 2010' 카테고리의 다른 글
Visual Studio 에서 FTP 연결을 통한 업로드,다운로드 소스참고 (0) | 2015.09.14 |
---|---|
DB에서 저장된 이미지 PictureBox로 불러오기 (0) | 2015.09.14 |
VisualStudio2010 , MSSQL2008 이미지 컨트롤 (Stream 사용) (0) | 2015.09.14 |
인사급여시스템 물리ERD (0) | 2015.09.14 |
리포트 매개변수 셋팅 (0) | 2015.09.14 |