VicoTas
Câu hỏi
vietnamconnection vnconnection
22/04/2013 20:04

Import từ Excel sang Visual Basic bằng cách nào hả các bạn?

Tôi muốn kết xuất một bản Excel có các trường:
+ ngày tháng
+ Mã Sản phẩm
+ Khách Hàng
+ Số lượng sản phẩm
+ Hạn giao hàng

Xin một đoạn code trong Visual Basic để import dữ liệu từ Excel vào cơ sở dữ liệu của phần mềm.
Phần mềm của tôi là phần mềm Quản Lý Sản Phẩm.

Danh sách câu trả lời (1)
avatar Uni2805 22/04/2013 20:04
Cách thực hiện:
1. Tạo project VB mới.
2. Tham chiếu (Reference) thư viện Excel (Microsoft Excel Object Library).
3. Soạn code với thuật toán:
- Tạo đối tượng Excel.Application.
- Mở Workbook (file excel) của bạn.
- Lấy sheet chứa dữ liệu.
- Đặt biến I (Long) chạy từ dòng đầu tiên của sheet đến dòng dữ liệu cuối cùng của sheet. Tại mỗi bước dùng lệnh SQL Insert hoặc Recordset.AddNew để thêm dữ liệu vào bảng dữ liệu (Đưa giá trị tại Cells(I,"tên cột") vào Field tương ứng trong bảng. Lưu ý định dạng ngày tháng, nếu bạn dùng định dạng ngày trong Excel thì không sao, còn nếu dùng các định dạng ngày đặc biệt (khác với định dạng của hệ thống) thì phải xử lý lại (dùng hàm DateSerial của VB để tạo giá trị ngày từ giá trị chuỗi ngày lưu trong Excel). Lưu ý thêm về chiều dài của các trường dữ liệu, import từ Excel vào database rất hay gặp trường hợp chiều dài dữ liệu trong Excel lớn hơn kích thước định nghĩa của trường, gây ra lỗi khi cập nhật.

- Đóng workbook, thoát Excel.

Ví dụ (chỉ là mẫu vì bạn không đưa rõ nguồn dữ liệu):
Giả sử bạn có file Excel: C:\\data.xls với bảng dữ liệu nằm ở sheet đầu tiên, cấu trúc bảng dữ liệu: dòng đầu tiên là tiêu đề, dữ liệu nằm từ dòng thứ 2 trở xuống, kết thúc dữ liệu bằng dòng trống (cột đầu tiên rỗng). Các cột dữ liệu theo bảng tương ứng:
+ ngày tháng (cột A)
+ Mã Sản phẩm (cột B)
+ Khách Hàng (cột C)
+ Số lượng sản phẩm (cột D)
+ Hạn giao hàng (cột E)

Giả sử tên bảng dữ liệu trong CSDL tên là: tblData
Code:

Private Sub Import()
Dim mExcel As Excel.Application
Dim mWorkBook As Excel.Workbook
Dim mSheet As Excel.Worksheet
Dim I As Long
Dim mRs As ADODB.Recordset
Set mExcel = New Excel.Application
Set mWorkBook = mExcel.Workbooks.Open("C:\\data.xls", , True)
Set mSheet = mWorkBook.Worksheets(1)
'--
Set mRs = New ADODB.Recordset
mRs.Open "tblData", mCnn, adOpenKeyset, adLockOptimistic
I = 2
While Len(mSheet.Cells(I, "A")) > 0
mRs.AddNew
mRs.Fields("NgayThang") = CDate(mSheet.Cells(I, "A"))
mRs.Fields("MaSanPham") = mSheet.Cells(I, "B")
mRs.Fields("KhachHang") = mSheet.Cells(I, "C")
mRs.Fields("SoLuong") = Val(mSheet.Cells(I, "D"))
mRs.Fields("HanGiaoHang") = Val(mSheet.Cells(I, "E"))
mRs.Update
'--
I = I + 1
Wend
mWorkBook.Close False
mExcel.Quit
mRs.Close
Set mRs = Nothing
End Sub
Trả lời câu hỏi
Tải lại mã
Câu hỏi lĩnh vực Cơ sở dữ liệu
Hin Access is denied khắc phục ra sao bro?

Đăng lúc: 20:04 - 22/04/2013 trong Cơ sở dữ liệu

Manh Linh Cho mình hỏi về hiện tượng thắt cổ chai ?

Đăng lúc: 20:03 - 22/04/2013 trong Cơ sở dữ liệu

Lê Thị Hoa Hồng Xin chỉ giúp về partition table ?

Đăng lúc: 20:03 - 22/04/2013 trong Cơ sở dữ liệu

nophoto Xin giúp tôi cứu ở cứng chết cơ với?

Đăng lúc: 20:03 - 22/04/2013 trong Cơ sở dữ liệu

Lê Văn Tùng Ai có phần mềm chèn hình ảnh minh họa cho word thì cho mình mượn được không?

Đăng lúc: 20:03 - 22/04/2013 trong Cơ sở dữ liệu

Uk Tôi có một CSDL Access chứa các địa chỉ email. Xin hướng dẫn cách chuyển CSDL này thành tập tin sổ địa chỉ Address Book trong Outlook?

Đăng lúc: 20:03 - 22/04/2013 trong Cơ sở dữ liệu

Link Hướng dẫn chèn công thức hóa học vào cơ sở dữ liệu SQL Server và cách đưa công thức hóa học đó từ textbox của VB .Net vào SQL Server?

Đăng lúc: 20:03 - 22/04/2013 trong Cơ sở dữ liệu

vietnamconnection Có thể lập trình web với ASP lấy dữ liệu của một bảng trong database SQL để cập nhật qua một database khác được không?

Đăng lúc: 20:03 - 22/04/2013 trong Cơ sở dữ liệu

nophoto Khi nhập dữ liệu trực tiếp trong cell (của Table) của SQL Server 2005, có cách nào để ngắt dòng?

Đăng lúc: 20:03 - 22/04/2013 trong Cơ sở dữ liệu

Nguyễn Văn Siêu database là gì?

Đăng lúc: 20:03 - 22/04/2013 trong Cơ sở dữ liệu

Ngô Minh Tùng IEEE là gì ạh?

Đăng lúc: 20:03 - 22/04/2013 trong Cơ sở dữ liệu

Hương Mấy pác nào pro thì chỉ dùm mình với nha!!!!!!!!!!!

Đăng lúc: 20:03 - 22/04/2013 trong Cơ sở dữ liệu

Hoài Nam (Nam Tước) Cần hỏi về cài đặt chương trình !!!! chỉ giùm tui cái nha

Đăng lúc: 21:24 - 25/06/2013 trong Cơ sở dữ liệu

lighting Ai biết cách Import file data.sql vào DB ko ạ??

Đăng lúc: 20:03 - 22/04/2013 trong Cơ sở dữ liệu

Link Có bạn nào biết cách nén thật mạnh không ?

Đăng lúc: 20:03 - 22/04/2013 trong Cơ sở dữ liệu

Củ Chuối Địa chỉ ID có cần được bảo vệ như thông tin cá nhân không

Đăng lúc: 20:03 - 22/04/2013 trong Cơ sở dữ liệu

nophoto Làm thế nào để tham chiếu tới một cột trong một combo box hoặc list box gồm nhiều cột?

Đăng lúc: 20:03 - 22/04/2013 trong Cơ sở dữ liệu

Link Làm thế nào để xóa các bản ghi bị trùng trong bảng của bạn?

Đăng lúc: 20:03 - 22/04/2013 trong Cơ sở dữ liệu

Ngô Minh Tùng Làm thế nào để Import một bảng trong Access sang Excel?

Đăng lúc: 20:02 - 22/04/2013 trong Cơ sở dữ liệu

Nguyễn Văn Siêu Cách sắp xếp dữ liệu trong Access?

Đăng lúc: 20:02 - 22/04/2013 trong Cơ sở dữ liệu

Rao vặt Siêu Vip