Tôi đang sử dụng OleDb để chọn dữ liệu từ bảng tính excel. Mỗi bảng tính có thể chứa nhiều bảng nhỏ và có thể là đồ nội thất như tiêu đề và nhãn. Vì vậy, nó có thể trông như thế này, nơi chúng tôi có hai bảng và một số chức danh;Kết nối OleDb với Excel; làm cách nào để chọn chiều rộng cố định, chiều cao không bị chặn?
A B C D 1 . . . . 2 . . . . 3 Table1 . . . 4 Header1 HEADER2 . . 5 h huey . . 6 d dewey . . 7 l loius . . 8 s scrooge . . 9 . . . . 10 . . . . 11 . . . . 12 . . . . 13 . Table 2 . . 14 . HEADER1 HEADER2 HEADER3 15 . 1 foo x 16 . 2 bar y 17 . 3 baz z 18 . . . . 19 . . . .
Trong bước trước, người dùng đã chọn tiêu đề của bảng mà họ quan tâm; trong trường hợp này, nhìn vào bảng 2 họ sẽ chọn phạm vi B14:D14
.
Các cài đặt này được lưu và sau đó tôi cần truy vấn bảng đó. Nó có thể xảy ra hơn và hơn, khi dữ liệu bảng tính được cập nhật; nhiều hàng hơn có thể được thêm vào bất kỳ lúc nào, nhưng tiêu đề luôn cố định. Có một hàng (hàng trống) đánh dấu phần cuối của dữ liệu
Để chọn dữ liệu trong bảng, tôi đang viết một truy vấn như thế này;
SELECT * FROM [Sheet1$B14:D65535]
để chọn dữ liệu trong bảng 2, sau đó kiểm tra thủ công hàng sentinel, nhưng điều này có vẻ không hài lòng. Excel 2003 chỉ có thể đọc 65.535 hàng (uint16), nhưng excel 2007 có thể đọc nhiều hơn (uint32), vì vậy tôi phải viết mã cung cấp truy vấn khác cho Excel 2003 và 2007 dựa trên phần mở rộng của tệp (.xls vs. xls?).
Có ai biết cách viết một truy vấn cho biết;
- 'chọn mọi thứ ở bên phải và bên phải của B14'?
- 'chọn tất cả mọi thứ trong cột B-> D'
- 'chọn B12: D *' nơi * có nghĩa là 'tất cả mọi thứ bạn có thể'
Trang tính Excel 2003 có thể chứa 65536 hàng, được đánh số từ 0 đến 65535 nội bộ và từ 1 đến 65536 bên ngoài. –