- [VB.NET] Chia sẻ source code lịch âm dương và hẹn lịch nhắc việc
- [C#] Hướng dẫn đọc thông số thiết bị Thiết bị kiểm tra Pin (HIOKI BATTERY HiTESTER BT3562)
- [VB.NET] Hướng dẫn giải captcha sử dụng dịch vụ AZCaptcha API trên winform
- [C#] Hướng dẫn chứng thực đăng nhập ứng dụng bằng vân tay (Finger Print) trên máy tính
- [C#] Color Thief cách xuất màu sắc thiết kế từ hình ảnh
- [C#] Cách tạo bản quyền và cho phép dùng thử ứng dụng Winform
- [C#] Hướng dẫn sử dụng trình duyệt web Chrome convert HTML sang tập tin file PDF
- [C#] Kết nôi điện thoại Android, IOS với App Winform via Bluetooth
- [DATABASE] Cách query cộng trừ dồn dần trong Sqlserver
- [C#] Thiết kế ứng dụng Console đẹp với thư viện Spectre.Console
- [C#] Thiết kế ứng dụng Single Instance và đưa ứng dụng lên trước nếu kiểm tra ứng dụng đang chạy
- [C#] Giới thiệu JSON Web Token và cách đọc chuỗi token
- [C#] Cách tăng giảm font chữ tất cả các control trên winform
- [DEVEXPRESS] Tích hợp chức năng Tìm kiếm Search vào CheckedComboboxEdit
- [C#] Gởi email Metting Calendar Reminder kèm nhắc thời gian lịch họp
- [C#] Tìm kiếm xem danh sách từ khóa có tồn tại trong đoạn văn bản hay không
- [C#] Thiết kế giao diện ứng dụng trên Console sử dụng thư viện Terminal.Gui
- [C#] Hướng dẫn tạo mã VietQR Payment API Winform
- [C#] Sử dụng thư viện BenchmarkDotNet đo hiệu năng của hảm Method
- [DEVEXPRESS] Tìm kiếm không dấu tô màu highlight có dấu trên C# Winform
Hướng dẫn copy dữ liệu từ excel vào gridview và lưu xuống cơ sở dữ liệu.
Hôm nay, mình xin hướng dẫn các bạn copy dữ liệu từ excel dán trực tiếp vào gridview của Devexpress và sau đó, lưu dữ liệu thay đổi trên gridview vào database.
Các bạn ai cũng biết việc nhập liệu rất mất thời gian, và nhiều lúc nhập liệu dữ liệu không chắc chính xác, nếu dữ liệu dưới 100 dòng, các bạn có thể nhập bằng tay vào, nhưng nếu dữ liệu vài ngàn dòng, nếu các bạn nhập bằng tay có thể mất vài giờ. Chính vì lý do đó, hôm nay mình xin hướng dẫn các bạn copy dữ liệu từ excel vào lưu vào database một cách nhanh nhất.
Và các bạn cũng có thể copy dữ liệu ngược lại từ Gridview trên form vào excel.
Giao diện chương trình như hình bên dưới:
- Để thực hiện ứng dụng trên:
Bước 1: Copy dữ liệu từ excel vào clipboard .
Bước 2: Paste dữ liệu từ clipboard vào gridview của Devexpress.
Bước 3: Save tất cả dữ liệu trên gridview vào database.
Video hướng dẫn chi tiết thực hiện ứng dụng:
Bây giờ ta bắt đầu code thôi: :))
- Đầu tiên các bạn cần import thư viện sqlserver vào.
Imports System.ComponentModel
Imports System.Text
Imports System.Data
Imports System.Data.SqlClient
- Khai báo các biến kết nối cơ sở dữ liệu, vào một datatable để lưu dữ liệu từ clipboard vào datatable và xử nó lên gridview
Dim con As New SqlConnection
Dim tbl As DataTable
- Viết hàm Tạo kết nối đến cơ sở dữ liệu.
'hàm tạo kết nối với cơ sở dữ liệu
Public Sub taoketnoi()
Dim str As String = "Data Source=DESKTOP-EG3TFAM;Initial Catalog=Student;Integrated Security=True"
con.ConnectionString = str
con.Open()
End Sub
- Viết hàm đóng kết nối
'hàm đóng kết nối
Public Sub dongketnoi()
con.Close()
End Sub
- Viết hàm load database vào datatable theo câu lệnh sql truyền vào.
Public Function _load_data(ByVal strLenh As String) As DataTable
Dim dt As New DataTable
taoketnoi()
Dim cmd As New SqlDataAdapter(strLenh, con)
cmd.Fill(dt)
dongketnoi()
Return dt
End Function
- Viết hàm kiểm tra dữ liệu mã sinh viên có trùng không, nếu trùng thì không lưu dữ liệu xuống.
Public Function _kiemtra(ByVal strLenh As String) As Integer
Dim str As Integer
taoketnoi()
Dim cmd As New SqlCommand(strLenh, con)
str = cmd.ExecuteScalar
dongketnoi()
Return str
End Function
- Viết hàm lưu dữ liệu từ gridview xuống database:
Public Sub _Save(ByVal strLenh As String)
taoketnoi()
Dim d As String = "set dateformat dmy"
Dim cmd1 As New SqlCommand(d, con)
cmd1.ExecuteNonQuery()
Dim cmd As New SqlCommand(strLenh, con)
cmd.ExecuteNonQuery()
dongketnoi()
End Sub
- Viết sự kiện cho nút form-load, khi load form sẽ load dữ liệu từ database lên gridview.
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
tbl = New DataTable()
tbl = _load_data("select masv as [Mã sinh viên], tensv as [Tên sinh viên], hinhanh as [Hình ảnh] from test")
GridControl1.DataSource = tbl
End Sub
- Viết hàm cho nút copy dữ liệu trên gridview vào clipboard
Private Sub SimpleButton1_Click(sender As Object, e As EventArgs) Handles SimpleButton1.Click
GridView1.CopyToClipboard()
End Sub
- Viết tiếp hai hàm để xử lý clipboard vào datatable vào xử lý dán vào gridview
Private Property ClipboardData() As String
Get
Dim iData As IDataObject = Clipboard.GetDataObject()
If iData.ToString = "" Then
Return ""
End If
If iData.GetDataPresent(DataFormats.UnicodeText) Then
Return DirectCast(iData.GetData(DataFormats.UnicodeText), String)
End If
Return ""
End Get
Set(value As String)
Clipboard.SetDataObject(value)
End Set
End Property
--------------------------------------------------------------------------------------------------------
Private Sub AddRow(data As String)
If data = String.Empty Then
Return
End If
Dim rowData As String() = data.Split(New Char() {ControlChars.Cr, ControlChars.Tab})
Dim newRow As DataRow = tbl.NewRow
Dim i As Integer = 0
While i < rowData.Length
If i >= tbl.Columns.Count Then
Exit While
End If
newRow(i) = rowData(i)
System.Math.Max(System.Threading.Interlocked.Increment(i), i - 1)
End While
tbl.Rows.Add(newRow)
End Sub
- Viết sự kiện cho nút paste
Private Sub SimpleButton3_Click(sender As Object, e As EventArgs) Handles SimpleButton3.Click
Dim data As String() = ClipboardData.Split(ControlChars.Lf)
If data.Length < 1 Then
Return
End If
For Each row As String In data
AddRow(row)
Next
End Sub
- Và cuối viết sự kiện cho nút lưu dữ liệu trên gridview xuống database.
Private Sub SimpleButton2_Click(sender As Object, e As EventArgs) Handles SimpleButton2.Click
Dim text As String = ""
Dim dr As DataRow
For index = 0 To GridView1.RowCount - 1
dr = GridView1.GetDataRow(index)
If dr.RowState = DataRowState.Added Then ' Nếu dữ liệu trên grid view có thêm mới dữ liệu
Dim masv As String = dr("Mã sinh viên")
Dim tensv As String = dr("Tên sinh viên")
Dim hinhanh As String = dr("Hình ảnh")
If IsNothing(dr) Then
Exit For
End If
If (_kiemtra("select count(*) from test where masv='" & masv & "'") = 0) Then ' Kiểm tra mã sinh đã tồn tại chưa
_Save("INSERT INTO test(masv, tensv, hinhanh) VALUES('" & masv & "',N'" & tensv & "','" & hinhanh & "')")
End If
End If
Next
End Sub
Chúc các bạn thành công!
Cám ơn các bạn đã xem bài viết. Hãy like and share giúp mình nha các bạn.
Các bạn có thể Đăng ký kênh Youtube của mình ở góc phải bên trên màn hình.
Mọi thắc mắc về bài viết các bạn có thể hỏi ở http://hoidap.laptrinhvb.net để được support.