- [C#] Cách Sử Dụng DeviceId trong C# Để Tạo Khóa Cho Ứng Dụng
- [SQLSERVER] Loại bỏ Restricted User trên database MSSQL
- [C#] Hướng dẫn tạo mã QRcode Style trên winform
- [C#] Hướng dẫn sử dụng temp mail service api trên winform
- [C#] Hướng dẫn tạo mã thanh toán VietQR Pay không sử dụng API trên winform
- [C#] Hướng Dẫn Tạo Windows Service Đơn Giản Bằng Topshelf
- [C#] Chia sẻ source code đọc dữ liệu từ Google Sheet trên winform
- [C#] Chia sẻ source code tạo mã QR MOMO đa năng Winform
- [C#] Chia sẻ source code phần mềm lên lịch tự động chạy ứng dụng Scheduler Task Winform
- [Phần mềm] Tải và cài đặt phần mềm Sublime Text 4180 full version
- [C#] Hướng dẫn download file từ Minio Server Winform
- [C#] Hướng dẫn đăng nhập zalo login sử dụng API v4 trên winform
- [SOFTWARE] Phần mềm gởi tin nhắn Zalo Marketing Pro giá rẻ mềm nhất thị trường
- [C#] Việt hóa Text Button trên MessageBox Dialog Winform
- [DEVEXPRESS] Chia sẻ code các tạo report in nhiều hóa đơn trên XtraReport C#
- [POWER AUTOMATE] Hướng dẫn gởi tin nhắn zalo từ file Excel - No code
- [C#] Chia sẻ code lock và unlock user trong domain Window
- [DEVEXPRESS] Vẽ Biểu Đồ Stock Chứng Khoán - Công Cụ Thiết Yếu Cho Nhà Đầu Tư trên Winform
- [C#] Hướng dẫn bảo mật ứng dụng 2FA (Multi-factor Authentication) trên Winform
- [C#] Hướng dẫn convert HTML code sang PDF File trên NetCore 7 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.