[VB.NET] การอ่านข้อมูลไฟล์ CSV จากลิ้งค์ (URL) โดยตรง (ข้อมูลการเฝ้าระวัง COVID-19 ประเทศไทย)
http://www.g2gnet.com/webboard/images/vbnet/covid19thailand.pngCSV ย่อมาจาก Comma Separated Value เป็นไฟล์ข้อความประเภทหนึ่ง ที่ใช้สำหรับเก็บข้อมูลในรูปแบบตาราง โดยใช้เครื่องหมายจุลภาค หรือคอมม่า (,) ในการแบ่งแต่ละคอลัมภ์ โดยปกติเราสามารถบันทึกไฟล์จาก Microsoft Excel ออกมาเป็น CSV ไฟล์ได้โดยตรง หรืออาจได้ไฟล์ CSV จากการ export ไฟล์จากระบบฐานข้อมูลอื่นๆ ... บทความชุดนี้จะใช้การอ่านไฟล์ CSV จากลิ้งค์โดยตรง คือจะไม่บันทึกไฟล์ CSV ลงในเครื่องคอมฯก่อน แต่จะใช้การอ่านข้อมูลจากไฟล์ CSV ผ่านเว็บไซต์ไปเลย โดยแอดมินจะใช้ ข้อมูลการเฝ้าระวัง COVID-19 ของประเทศไทย ...
ข้อมูลไฟล์ CSV (Comma Separated Value) ... http://www.g2gnet.com/webboard/images/vbnet/covid19csv.png
มาดูโค้ดกันเถอะ ...
Imports System.Net
Imports System.IO
Public Class frmWatchCovid19
Private Sub frmWatchCovid19_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
lblCount.Text = ""
txtURL.Text = "https://raw.githubusercontent.com/M4R14/covid-19-thailand/master/data.csv"
End Sub
Private Sub btnReadCSV_Click(sender As System.Object, e As System.EventArgs) Handles btnReadCSV.Click
Try
'//
Dim tbl As New DataTable
tbl.Columns.Add("Date", GetType(String))
tbl.Columns.Add("Check", GetType(Integer))
tbl.Columns.Add("Confirmed", GetType(Integer))
tbl.Columns.Add("Recovered", GetType(Integer))
tbl.Columns.Add("Deaths", GetType(Integer))
'/
Dim strReader As New StringReader(DownloadCSV(txtURL.Text))
Dim line = strReader.ReadLine
Dim RowCount As Integer = 0
While String.IsNullOrEmpty(line) = False Or Not IsNothing(line)
'// Split comma delimited.
Dim parts = line.Split(","c)
If parts(0).Trim.ToLower <> "date" Then
tbl.Rows.Add(New Object() { _
parts(0).ToString.Trim, _
parts(1).ToString.Trim, _
parts(2).ToString.Trim, _
parts(3).ToString.Trim, _
parts(4).ToString.Trim})
RowCount += 1
End If
'// Get new line.
line = strReader.ReadLine
End While
'//
dgvData.DataSource = tbl
lblCount.Text = "จำนวน: " & RowCount & " รายการ."
'// Setup DataGridView
Call InitDataGrid()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
' / -----------------------------------------------------------------------------
' / Use StreamReader class to download csv without the need to save it locally.
Public Function DownloadCSV(ByVal url As String) As String
Dim httpWebRequest As HttpWebRequest = CType(WebRequest.Create(url), HttpWebRequest)
Dim httpWebResponse As HttpWebResponse = CType(httpWebRequest.GetResponse(), HttpWebResponse)
Dim streamReader As StreamReader = New StreamReader(httpWebResponse.GetResponseStream())
Dim results As String = streamReader.ReadToEnd()
streamReader.Close()
Return results
End Function
Private Sub InitDataGrid()
'//
With dgvData
.RowHeadersVisible = True
.AllowUserToAddRows = False
.AllowUserToDeleteRows = False
.AllowUserToResizeColumns = True
.AllowUserToResizeRows = False
.SelectionMode = DataGridViewSelectionMode.FullRowSelect
.MultiSelect = False
'// Data rows
.Font = New Font("Tahoma", 11)
.RowTemplate.MinimumHeight = 27
.RowTemplate.Height = 27
'// Column Header
.ColumnHeadersHeight = 27
.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize
'// -------------- Dot Net Bar ----------------
'// Autosize Column
.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
'.AutoResizeColumns()
'// Even-Odd Color
.AlternatingRowsDefaultCellStyle.BackColor = Color.AliceBlue
' Adjust Header Styles
With .ColumnHeadersDefaultCellStyle
.BackColor = Color.Navy
.ForeColor = Color.Black
.Font = New Font("Tahoma", 12, FontStyle.Bold)
End With
.RowHeadersDefaultCellStyle.SelectionBackColor = Color.Empty
End With
'//
With dgvData.Columns(0)
.Name = "Date"
.HeaderText = "วันที่"
.ReadOnly = True
End With
With dgvData.Columns(1)
.Name = "check"
.HeaderText = "เฝ้าระวัง"
.DefaultCellStyle.Format = "n0"
End With
With dgvData.Columns(2)
.Name = "Confirmed"
.HeaderText = "ยืนยัน"
End With
With dgvData.Columns(3)
.Name = "Recovered"
.HeaderText = "รักษาหาย"
End With
With dgvData.Columns(4)
.Name = "Deaths"
.HeaderText = "เสียชีวิต"
End With
'//
For i = 1 To 4
With dgvData.Columns(i)
.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight
.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
.ReadOnly = True
End With
Next
End Sub
End Class
ดาวน์โหลดโค้ดต้นฉบับ VB.NET (2010) ได้ที่นี่ ...
ขอบคุณครับ
หน้า:
[1]