• Thứ Sáu, 22/04/2005 16:32 (GMT+7)

    Câu hỏi :
    Tôi có đoạn code VB.NET 2003 đọc dữ liệu từ bảng Excel (gồm 4 cột và 3 dòng) và đưa vào Table SQL Server 2000 với câu lệnh SQL Insert. Xin hướng dẫn cách mở rộng chương trình để có thể đọc được bảng Excel có số dòng bất kỳ, khi gặp một dòng trống thì kết thúc (số cột biết trước).

    Trả lời :

     Dim WSheet As New Excel.Worksheet

     WSheet = EXL.Workbooks.Open(“C:\TEST1.XLS”).Worksheets.Item(1)

     EXL.Range(“A2:E4”).Select()

     Dim CData As Excel.Range

     CData = EXL.Selection

     Dim strSQL As String= “”

     Dim strTemp As String = “”

     Dim iCol, iRow As Integer

     iRow = 1 : iCol = 1

     For iRow = 1 To 3

     strTemp = “insert into tblExcel(a, b, c, d) values(“

     For iCol = 1 To 5

     strTemp += “” & CData(iRow, iCol).value & “,”

     Next

     strTemp += “);”

     strSQL += strTemp

     Next

     strSQL = Replace(strSQL, “,)”, “)”)

     EXL.Workbooks.Close()

     Để biết chỉ số dòng trống trong worksheet nào đó, bạn có thể dùng cơ chế lặp dò từng dòng từ trên xuống, khi nào thấy dòng trống thì dừng lại. Thí dụ hàm FindLastRow sau đây cho phép bạn tìm hàng cuối cùng còn dữ liệu trong 1 cột nào đó của worksheet Excel:

     Hàm tìm hàng cuối cùng của cột qui định có dữ liệu
     tham số Cot qui định cột
     tham số Row qui định hàng bắt đầu tìm

     Function FindLastRow(WSheet As Excel.Worksheet, ByVal Cot As String, ByVal Row As Integer) As Integer

     Dim Ref As String

     Do While (True)

     xây dựng tham khảo cho cell cần kiểm tra

     Ref = Cot & Row

     If Len(WSheet.Range(Ref).Text) <> 0 Then

     nếu có dữ liệu thì kiểm tra tiếp hàng kế

     Row = Row + 1

     Else

     nếu không có dữ liệu thì dừng

     Exit Do

     End If

     Loop

     trả về vị trí hàng cuối cùng có dữ liệu

     FindLastRow = Row - 1

     End Function

     Sau khi đã biết chính xác chỉ số dòng cuối cùng có dữ liệu, bạn chỉ cần dùng lệnh For với chỉ số cận trên là chỉ số dòng tìm được (thay vì cố định là 3 như đoạn code của bạn).

    Chuyên mục: Lập trình