ชุมชนคนรักภาษาเบสิค - Visual Basic Community

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 472|ตอบกลับ: 0

[VB.NET] การอ่านข้อมูลจาก Google Sheets เพื่อนำมาแสดงผลลงในตารางกริด

[คัดลอกลิงก์]

311

กระทู้

502

โพสต์

6060

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
6060





การอ่านข้อมูลจาก Google Sheets เพื่อนำมาแสดงผลลงในตารางกริด อย่างแรกเราต้องสร้างไฟล์ Credentials ในการกำหนดสิทธิ์ในการเข้าถึงข้อมูลจาก Google Sheets เสียก่อน ...



Youtube แสดงวิธีการขั้นตอนในการรับไฟล์ Credentials ...

ตัวอย่าง Google Sheets ซึ่งตอนนี้แอดมินได้เปิดให้เป็นแบบ Editor เพื่อให้ได้ลองทำการเขียนอ่านข้อมูลได้ ...

มาดูโค้ดฉบับเต็มกันเถอะ ...
  1. Imports Google.Apis.Auth.OAuth2
  2. Imports Google.Apis.Services
  3. Imports Google.Apis.Sheets.v4

  4. '// Sample Google Sheet.
  5. '// https://docs.google.com/spreadsheets/d/1nBOWl-PDGwYng6IOifi6bhoLfvamTn-45CWtn5t59qs/edit#gid=0

  6. Public Class frmGoogleSheet

  7.     Dim Service As SheetsService
  8.     Dim SpreadsheetId As String = "1nBOWl-PDGwYng6IOifi6bhoLfvamTn-45CWtn5t59qs"
  9.     Dim ApplicationName = "SampleSheet"
  10.     Dim SheetName As String = "Sheet1"
  11.     '// JSON credential file path.
  12.     Dim CredentialFilePath As String = MyPath(Application.StartupPath) & "credentials\GoogleSheet.json"
  13.     '//
  14.     Private Sub frmGoogleSheet_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  15.         Call Credentials()
  16.         Call LoadData()
  17.         Call SetupGridView()
  18.     End Sub

  19.     ' / ------------------------------------------------------------------------------------------------
  20.     '// Initialize Google Sheets API.
  21.     '// Must be used every time to read and write data.
  22.     ' / ------------------------------------------------------------------------------------------------
  23.     Sub Credentials()
  24.         '// Load credentials from JSON file.
  25.         Dim credential = GoogleCredential.FromFile(CredentialFilePath).CreateScoped(SheetsService.Scope.SpreadsheetsReadonly)
  26.         '// Create Google Sheets API service
  27.         Service = New SheetsService(New BaseClientService.Initializer() With {
  28.             .HttpClientInitializer = credential,
  29.             .ApplicationName = ApplicationName
  30.         })
  31.     End Sub

  32.     ' / ------------------------------------------------------------------------------------------------
  33.     Private Sub btnLoadData_Click(sender As Object, e As EventArgs) Handles btnLoadData.Click
  34.         Call LoadData()
  35.     End Sub

  36.     ' / ------------------------------------------------------------------------------------------------
  37.     ' / LOAD DATA.
  38.     ' / ------------------------------------------------------------------------------------------------
  39.     Private Sub LoadData()
  40.         '// Specify the range of cells you want to retrieve, e.g., "Sheet1!A1:C10"
  41.         Dim Range As String = SheetName + "!A1:Z100"
  42.         Try
  43.             '// Make the request to the Sheets API
  44.             Dim Request = Service.Spreadsheets.Values.Get(SpreadsheetId, Range)
  45.             Dim Response = Request.Execute()
  46.             '// Process the response and populate the DataGridView.
  47.             If Response.Values IsNot Nothing AndAlso Response.Values.Any() Then
  48.                 dgvData.Rows.Clear()
  49.                 dgvData.Columns.Clear()
  50.                 '// Assuming the first row contains headers.
  51.                 For Each Header In Response.Values.First()
  52.                     dgvData.Columns.Add(Header.ToString(), Header.ToString())
  53.                 Next
  54.                 '// Populate data rows.
  55.                 For RowIndex As Integer = 1 To Response.Values.Count - 1
  56.                     Dim Row = Response.Values(RowIndex)
  57.                     dgvData.Rows.Add(Row.ToArray())
  58.                 Next
  59.             End If
  60.             '//
  61.         Catch ex As Exception
  62.             MessageBox.Show(ex.Message)
  63.         End Try
  64.     End Sub

  65.     Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click
  66.         Me.Close()
  67.     End Sub

  68.     Private Sub frmGoogleSheet_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
  69.         Me.Dispose()
  70.         GC.SuppressFinalize(Me)
  71.         End
  72.     End Sub

  73. #Region "DATAGRIDVIEW"
  74.     '// Initialized DataGridView.
  75.     Private Sub SetupGridView()
  76.         With dgvData
  77.             .RowHeadersVisible = True
  78.             .AllowUserToAddRows = False
  79.             .AllowUserToDeleteRows = False
  80.             .AllowUserToResizeRows = False
  81.             .MultiSelect = False
  82.             .SelectionMode = DataGridViewSelectionMode.FullRowSelect
  83.             .ReadOnly = True
  84.             '// Data rows
  85.             .Font = New Font("Tahoma", 10)
  86.             .RowTemplate.MinimumHeight = 32
  87.             .RowTemplate.Height = 32
  88.             '// Autosize Column
  89.             .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
  90.             .EnableHeadersVisualStyles = False
  91.             '// Header
  92.             With .ColumnHeadersDefaultCellStyle
  93.                 .BackColor = System.Drawing.Color.SeaGreen
  94.                 .ForeColor = System.Drawing.Color.White
  95.                 .Font = New Font(dgvData.Font, FontStyle.Bold)
  96.             End With
  97.             '// Before you can adjust the height of the row.
  98.             .ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing
  99.             .ColumnHeadersHeight = 32
  100.             '/ Accept changes to the header's background color.
  101.             .EnableHeadersVisualStyles = False
  102.             '// Even-Odd Color of Rows.
  103.             .AlternatingRowsDefaultCellStyle.BackColor = System.Drawing.Color.Beige
  104.         End With
  105.     End Sub

  106.     Private Sub dgvData_RowPostPaint(sender As Object, e As DataGridViewRowPostPaintEventArgs) Handles dgvData.RowPostPaint
  107.         '// Display row numbers in row headers
  108.         Using b As New SolidBrush(dgvData.RowHeadersDefaultCellStyle.ForeColor)
  109.             e.Graphics.DrawString((e.RowIndex + 1).ToString(), dgvData.DefaultCellStyle.Font, b, e.RowBounds.Location.X + 12, e.RowBounds.Location.Y + 8)
  110.         End Using
  111.     End Sub
  112. #End Region

  113. #Region "FUNCTION"
  114.     ' / --------------------------------------------------------------------------------
  115.     ' / Get my project path
  116.     ' / AppPath = C:\My Project\bin\debug
  117.     ' / Replace "\bin\debug" with ""
  118.     ' / Return : C:\My Project\
  119.     Function MyPath(AppPath As String) As String
  120.         '/ Return Value
  121.         MyPath = AppPath.ToLower.Replace("\bin\debug", "").Replace("\bin\release", "").Replace("\bin\x86\debug", "")
  122.         '// If not found folder then put the \ (BackSlash ASCII Code = 92) at the end.
  123.         If Microsoft.VisualBasic.Right(MyPath, 1) <> Chr(92) Then MyPath = MyPath & Chr(92)
  124.     End Function
  125. #End Region
  126. End Class
คัดลอกไปที่คลิปบอร์ด

ดาวน์โหลดโค้ดฉบับเต็ม VB.NET (2017) และ .Net Framework 4.5+ ...

ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

x
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

รายละเอียดเครดิต

ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|G2GNet.com  

GMT+7, 2024-4-30 02:11 , Processed in 0.286550 second(s), 4 queries , File On.

Powered by Discuz! X3.4, Rev.62

Copyright © 2001-2020 Tencent Cloud.

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้