NEWS

Hướng dẫn copy dữ liệu từ excel vào gridview và lưu xuống cơ sở dữ liệu.

Hướng dẫn copy dữ liệu từ excel vào gridview và lưu xuống cơ sở dữ liệu.
Đăng bởi: Thảo Meo - Lượt xem: 30773 21:33:24, 29/01/2016C#   In bài viết

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:

Copy data from excel to gridview devexpress

- Để 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. heart

DOWNLOAD SOURCE

THÔNG TIN TÁC GIẢ

BÀI VIẾT LIÊN QUAN

Hướng dẫn copy dữ liệu từ excel vào gridview và lưu xuống cơ sở dữ liệu.
Đăng bởi: Thảo Meo - Lượt xem: 30773 21:33:24, 29/01/2016C#   In bài viết

CÁC BÀI CÙNG CHỦ ĐỀ

Đọc tiếp
.