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

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

[VB.NET] Import ข้อมูลใน Excel เข้ามาแสดงผลในตารางกริด

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

213

กระทู้

301

โพสต์

2403

เครดิต

ผู้ดูแลระบบ

Rank: 9Rank: 9Rank: 9

เครดิต
2403




การ Import ข้อมูลใน Excel เพื่อนำมาแสดงผลลงตารางกริด แอดมินจะใช้วิธีการมองไฟล์ Excel เป็นเหมือนไฟล์ฐานข้อมูล โดยกำหนด Provider = Microsoft.ACE.OLEDB.12.0 (เราจึงต้องเลือกใช้ Namespace := System.Data.OleDb) จากนั้นเมื่อ Connect เรียบร้อย ก็จะทำการโหลด WorkSheet ซึ่งจะมองเห็นเป็นตารางข้อมูล (Table) เข้ามายัง ComboBox Control จากนั้นผู้ใช้ก็เลือกรายการ WorkSheet เพื่อทำการแสดงผลข้อมูลในตารางกริด ... จบหลักการวิธีคิด


มาดูโค้ดต้นฉบับกันเถอะ ...
  1. Imports System.Data.OleDb

  2. Public Class frmExcel2DataGrid

  3.     ' / --------------------------------------------------------------------
  4.     ' / เลือกไฟล์ Excel
  5.     Private Sub btnOpenExcel_Click(sender As System.Object, e As System.EventArgs) Handles btnOpenExcel.Click
  6.         '/ ประกาศใช้งาน Open File Dialog ในแบบ Run Time
  7.         Dim dlgOpenFile As OpenFileDialog = New OpenFileDialog()

  8.         ' / ตั้งค่าการใช้งาน Open File Dialog
  9.         With dlgOpenFile
  10.             .InitialDirectory = MyPath(Application.StartupPath)
  11.             .Title = "เลือกไฟล์ MS Excel"
  12.             .Filter = "All Files (*.*)|*.*|Excel files (*.xlsx)|*.xlsx|CSV Files (*.csv)|*.csv|XLS Files (*.xls)|*xls"
  13.             .FilterIndex = 1
  14.             .RestoreDirectory = True
  15.         End With
  16.         '/ หากเลือกปุ่ม OK หลังจากการ Browse ...
  17.         If dlgOpenFile.ShowDialog() = DialogResult.OK Then
  18.             txtFileName.Text = dlgOpenFile.FileName
  19.             Dim strConn As String = _
  20.                 " Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
  21.                 dlgOpenFile.FileName & ";" & _
  22.                 " Extended Properties=""Excel 12.0 Xml; HDR=YES"";"
  23.             Dim Conn As New OleDbConnection(strConn)
  24.             Conn.Open()
  25.             '/ มอง WorkSheet ให้เป็นตารางข้อมูล (Table)
  26.             Dim dtSheets As DataTable = Conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing)
  27.             Dim drSheet As DataRow

  28.             cmbSheetName.Items.Clear()
  29.             '/ นำรายชื่อ WorkSheet ทั้งหมด มาเก็บไว้ที่ ComboBox เพื่อรอให้ User เลือกนำไปใช้งาน
  30.             For Each drSheet In dtSheets.Rows
  31.                 cmbSheetName.Items.Add(drSheet("TABLE_NAME").ToString)
  32.             Next
  33.             Conn.Close()
  34.         End If

  35.     End Sub

  36.     ' / --------------------------------------------------------------------
  37.     '// เลือก WorkSheet แล้วแสดงผลข้อมูลลงในตารางกริด
  38.     Private Sub cmbSheetName_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles cmbSheetName.SelectedIndexChanged
  39.         Dim Conn As OleDbConnection
  40.         Dim Comm As OleDbCommand
  41.         Dim DAP As OleDbDataAdapter
  42.         Dim DS As DataSet

  43.         Dim strConn As String = _
  44.             " Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
  45.             txtFileName.Text & ";" & _
  46.             " Extended Properties=""Excel 12.0 Xml; HDR=YES"";"
  47.         Try
  48.             Conn = New OleDbConnection
  49.             Conn.ConnectionString = strConn
  50.             Comm = New OleDbCommand
  51.             '/ เสมือน WorkSheet เป็น Table ในฐานข้อมูล
  52.             Comm.CommandText = "Select * FROM [" & cmbSheetName.Text & "]"
  53.             Comm.Connection = Conn
  54.             DAP = New OleDbDataAdapter(Comm)
  55.             DS = New DataSet
  56.             Conn.Open()
  57.             DAP.Fill(DS, "Sheet1")
  58.             '/ ผูกข้อมูล (Bound Data) เข้ากับ Sheet1
  59.             dgvData.DataSource = DS.Tables("Sheet1")
  60.             '//
  61.             Call SetupDGVData()

  62.         Catch ex As Exception
  63.             MessageBox.Show(ex.Message)
  64.         Finally
  65.             Conn = Nothing
  66.             Comm = Nothing
  67.             DAP = Nothing
  68.             DS = Nothing
  69.         End Try
  70.     End Sub

  71.     ' / --------------------------------------------------------------------
  72.     '// Initialize DataGridView @Run Time
  73.     Private Sub SetupDGVData()
  74.         With dgvData
  75.             .RowHeadersVisible = False
  76.             .AllowUserToAddRows = False
  77.             .AllowUserToDeleteRows = False
  78.             .AllowUserToResizeRows = False
  79.             .MultiSelect = False
  80.             .SelectionMode = DataGridViewSelectionMode.FullRowSelect
  81.             .ReadOnly = True
  82.             .Font = New Font("Tahoma", 9)
  83.             ' Autosize Column
  84.             .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
  85.             '// Even-Odd Color
  86.             .AlternatingRowsDefaultCellStyle.BackColor = Color.AliceBlue
  87.             ' Adjust Header Styles
  88.             With .ColumnHeadersDefaultCellStyle
  89.                 .BackColor = Color.Navy
  90.                 .ForeColor = Color.Black ' Color.White
  91.                 .Font = New Font("Tahoma", 9, FontStyle.Bold)
  92.             End With
  93.         End With
  94.     End Sub

  95.     Private Sub frmExcel2DataGrid_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
  96.         Me.Dispose()
  97.         Application.Exit()
  98.     End Sub

  99.     ' / ------------------------------------------------------------------
  100.     ' / ฟังค์ชั่นที่เราสามารถกำหนด Path ให้กับโปรแกรมของเราเอง
  101.     ' / Ex.
  102.     ' / AppPath = C:\My Project\bin\debug
  103.     ' / Replace "\bin\debug" with ""
  104.     ' / Return : C:\My Project\
  105.     Function MyPath(AppPath As String) As String
  106.         AppPath = AppPath.ToLower()
  107.         MyPath = AppPath.Replace("\bin\debug", "").Replace("\bin\release", "")
  108.         '// If not found folder then put the \ (BackSlash ASCII Code = 92) at the end.
  109.         If Microsoft.VisualBasic.Right(MyPath, 1) <> Chr(92) Then MyPath = MyPath & Chr(92)
  110.     End Function

  111.     Private Sub btnExit_Click(sender As System.Object, e As System.EventArgs) Handles btnExit.Click
  112.         Me.Close()
  113.     End Sub

  114. End Class
คัดลอกไปที่คลิปบอร์ด



ดาวน์โหลดโค้ดต้นฉบับ VB.NET (2010) ได้ที่นี่ ...

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

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

x
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด

0

กระทู้

9

โพสต์

118

เครดิต

Member

Rank: 2

เครดิต
118
โพสต์ 2019-10-2 22:21:05 | ดูโพสต์ทั้งหมด

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

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

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

GMT+7, 2020-1-19 22:46 , Processed in 0.410458 second(s), 4 queries , File On.

Powered by Discuz! X3.3 R20170401, Rev.54

© 2001-2017 Comsenz Inc.

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