Lessons XVIII : Import từ Excel sang Visual Basic

Import từ Excel sang Visual Basic

Thứ hai, 18 Tháng 8 2008 15:53 huytranaz Hướng dẫn lập trình Visual Basic-VB.NET
Email In

Cách thực hiện:
1. Tạo project VB mới.
2. Tham chiếu (Reference) thư viện Excel (Microsoft Excel <ver> 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

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

Nguồn: ddth.com

Comments (2)add comment

quangdk said:

Hay qua day la phan em dang can. Thank bac tien boi nhe! smilies/cheesy.gif
report abuse
vote down
vote up
Tháng tám 26, 2008
Votes: +0

Ai giúp sử code này giúp minh said:

Private Sub NhapDuLieu()
Dim appExcel As Excel.Application
Dim appExcelWB As Excel.Workbook
Dim appExcelWS As Excel.Worksheet
Dim cnn As OleDbConnection
Dim MyCom As OleDbCommand
Dim strcnn As String
Dim strSQL As String
Dim i As Integer

appExcel = New Excel.Application()
appExcelWB = appExcel.Workbooks.Open(txtMofile.Text, , True)
appExcelWS = appExcel.Worksheets(1)
appExcel.Visible = False

strcnn = “Provider=SQLOLEDBsmilies/grin.gifata Source=SERVER;Integrated Security=SSPI;Initial Catalog=qlnl”
cnn = New OleDbConnection(strcnn)
cnn.Open()

i = 2
While (Len(appExcelWS.Cells(i, “A”)) > 0) = True ” Báo lỗi ở đây

strSQL = “Insert into T_INGPLX(STT, HOTEN, LOP, NAMSINH, QUOCTICH, CMND, ” & _
“SOGPLX, THUONGTRU, HANGA1, HANGA2, HANGA3, HANGA4, HANGB1, HANGB2, HANGC, HANGD, HANGE, NGAYCAP, NGAYHETHAN, HANGCAPMOI, GHICHU)” & _
“VALUES(‘” & appExcelWS.Cells(i, “A”) & “‘,” & _
“‘” & appExcelWS.Cells(i, “B”) & “‘,'” & appExcel.Cells(i, “C”) & “‘,” & _
“‘” & appExcelWS.Cells(i, “D”) & “‘,'” & appExcelWS.Cells(i, “E”) & “‘,” & _
“‘” & appExcelWS.Cells(i, “F”) & “‘,'” & appExcelWS.Cells(i, “G”) & “‘,” & _
“‘” & appExcelWS.Cells(i, “H”) & “‘,'” & appExcelWS.Cells(i, “I”) & “‘,” & _
“‘” & appExcelWS.Cells(i, “J”) & “‘,'” & appExcelWS.Cells(i, “K”) & “‘,” & _
“‘” & appExcelWS.Cells(i, “L”) & “‘,'” & appExcelWS.Cells(i, “M”) & “‘,” & _
“‘” & appExcelWS.Cells(i, “N”) & “‘,'” & appExcelWS.Cells(i, “O”) & “‘,” & _
“‘” & appExcelWS.Cells(i, “P”) & “‘,'” & appExcelWS.Cells(i, “Q”) & “‘,” & _
“‘” & appExcelWS.Cells(i, “R”) & “‘,'” & appExcelWS.Cells(i, “S”) & “‘,” & _
“‘” & appExcelWS.Cells(i, “T”) & “‘,'” & appExcelWS.Cells(i, “U”) & “‘)”

MyCom = New OleDbCommand(strSQL, cnn)
MyCom.ExecuteNonQuery()

End While
appExcelWB.Close()
appExcel.Quit()
cnn = Nothing
End Sub

report abuse
vote down
vote up
Tháng mười 14, 2008
Votes: -1

Write comment
  1. Leave a comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: