Lấy dữ liệu từ EXCEL

15.5967

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.
 
0--1

Liên hệ xóa tin: [email protected]