• Thứ Ba, 23/09/2008 09:00 (GMT+7)

    Lấy dữ liệu từ EXCEL

    Lượt xem 6123
    Đánh giá

    Câu hỏi :
    Xin hướng dẫn viết chương trình VB6 lấy dữ liệu trên bảng tính Excel (VD: họ tên, ngày sinh), sau đó hiển thị lên MSFlexGird. 
     

    Trả lời :
    Yêu cầu của bạn gồm 2 vấn đề chính:
     - Truy xuất nội dung từng cell trong bảng tính Excel. Hai phương pháp đơn giản, tin cậy nhất để truy xuất nội dung bảng tính Excel là: hoặc dùng các đối tượng "Excel Automation Server", hoặc dùng các đối tượng ADO để truy xuất file Excel như là cơ sở dữ liệu.

     - Xử lý đối tượng MSFlexGrid thông qua các thuộc tính, các tác vụ của nó.
     Sau đây là qui trình điển hình để xây dựng 1 ứng dụng VB 6.0 đơn giản, demo việc hiển thị vùng dữ liệu nằm trong các cell từ A1:J20 trên worksheet có tên là "Sheet1" nằm trên file Excel "c:\userData.xls" lên đối tượng MSFlexGrid của VB 6.0:

     1. Chạy VB 6.0, tạo Project mới thuộc loại "Standard EXE" (loại Project mặc định có 1 Form giao diện rỗng ban đầu).

     2. Chọn menu Project.References để hiển thị cửa sổ References. Duyệt tìm và chọn mục "Microsoft Excel x.y Object Library" để "add" các đối tượng truy xuất file Excel vào Project. Lưu ý x.y là chỉ số version của thư viện các đối tượng Excel được cài trên máy bạn.

     3. Chọn menu Project.Components để hiển thị cửa sổ Components. Duyệt tìm và đánh dấu chọn mục "Microsoft FlexGrid Controls 6.0" để "add" đối tượng MSFlexGrid vào Project.

     4. Vẽ 1 button trên Form có tên mặc định là Command1.

     5. Vẽ 1 đối tượng MSFlexGrid lên Form, thiết lập giá trị các thuộc tính sau của nó : (Name) = MyFlexGrid, AllowUserRisizing = 3 - flexRisizeBoth,

     6. Nhấn đúp chuột vào button vừa tạo để tạo thủ tục xử lý sự kiện click chuột trên button rồi viết đoạn code thực hiện việc hiển thị dữ liệu từ file Excel lên đối tượng MSFlexGrid như sau:
     Option Explicit
     'thủ tục xử lý sự kiện click chuột trên button
     Private Sub Command1_Click()
     'khai báo các biến cần dùng
     Dim oXL As Excel.Application
     Dim oWB As Excel.Workbooks
     Dim oSheet As Excel.Worksheet
     Dim rgn As Range
     Dim i As Integer, j As Integer
     'khởi động Excel và nhận đối tượng Application.
     Set oXL = CreateObject("Excel.Application")
     'xác định đối tượng quản lý file Excel.
     Set oWB = oXL.Workbooks
     'mở file "c:\userData.xls" chứa dữ liệu cần hiển thị
     oWB.Add "c:\userData.xls"
     'thiết lập biến miêu tả worksheet cần truy xuất
     Set oSheet = oWB.Item(1).Worksheets("Sheet1")
     'hiển thị nội dung trong vùng A1:J20 lên MSFlexGrid
     Set rgn = oSheet.Range("A1:J20")
     'thiết lập số hàng cho FlexGrid: 1 hàng tiêu đề + 20 hàng data
     MyFlexGrid.Rows = 21
     'thiết lập số cột cho FlexGrid: 1 cột tiêu đề + 10 cột data
     MyFlexGrid.Cols = 11
     'tạo tiêu đề các cột
     MyFlexGrid.Row = 0
     For i = 1 To 10
     MyFlexGrid.Col = i
     MyFlexGrid.Text = Chr(64 + i)
     'chỉnh giữa nội dung tiêu đề
     MyFlexGrid.CellAlignment = 4
     Next i
     'tạo tiêu đề các hàng
     MyFlexGrid.Col = 0
     For i = 1 To 20
     MyFlexGrid.Row = i
     MyFlexGrid.Text = i
     'chỉnh giữa nội dung tiêu đề
     MyFlexGrid.CellAlignment = 4
     Next i
     'lặp đọc từng cell dữ liệu và hiển thị
     For i = 1 To 20
     For j = 1 To 10
     MyFlexGrid.Row = i
     MyFlexGrid.Col = j
     MyFlexGrid.Text = rgn.Cells(i, j)
     Next j
     Next i
     'đóng đối tượng workbook (file xls)
     oWB.Item(1).Close
     'đóng ứng dụng Excel
     oXL.Quit
     End Sub

     7. chọn menu Run.Start để chạy thử ứng dụng xem nó hoàn thành nhiệm vụ qui định không.
     
    Ý kiến phản hồi và bình luận      Gởi ý kiến của bạn ?
    Chuyên mục: Cơ sở dữ liệu