2010-08-31 31 views
9

Tôi cần làm việc với Excel 2007 để đọc dữ liệu. mà đó là một trong những cách tốt nhất để làm điều đó:Cái nào là OLEDB hay đối tượng Excel hay cơ sở dữ liệu hay nhất

  1. Sử dụng OLEDB Provider
  2. Excel Interop Object
  3. Dump dữ liệu Excel để cơ sở dữ liệu và sử dụng thủ tục

vui lòng hướng dẫn cho tôi để lựa chọn .

+1

Câu hỏi của bạn không rõ ràng. Đọc thêm về cách đặt câu hỏi SO tại đây: http://tinyurl.com/so-hints – Oded

Trả lời

17

Dưới đây là ý kiến ​​của tôi:

1. Sử dụng Nhà cung cấp OLEDB

sẽ chỉ phù hợp với nhu cầu của bạn nếu bạn có các bảng có cấu trúc đơn giản, thống nhất. Nó sẽ không giúp bạn nhiều, ví dụ, nếu bạn phải trích xuất bất kỳ thông tin định dạng ô nào. Thuật toán "đoán kiểu hàng" lỗi của động cơ phản lực có thể làm cho phương pháp này hầu như không sử dụng được. Nhưng nếu kiểu dữ liệu có thể được xác định duy nhất từ ​​một vài hàng đầu tiên của mỗi bảng, thì cách tiếp cận này có thể là đủ. Pro: nó rất nhanh và nó hoạt động ngay cả trên các máy mà MS Excel không được cài đặt.

2. Đối tượng Excel Interop

có thể rất chậm, đặc biệt so với tùy chọn 1 và bạn cần cài đặt MS Excel. Nhưng bạn có thể truy cập hoàn toàn vào mô hình đối tượng của Excel, bạn có thể trích xuất hầu hết mọi thông tin (ví dụ: định dạng thông tin, màu sắc, khung hình) được lưu trữ trong tệp Excel của bạn và các trang tính của bạn có thể được cấu trúc phức tạp như bạn muốn.

3. Đặt dữ liệu Excel vào Cơ sở dữ liệu và Thủ tục Sử dụng

phụ thuộc vào loại kết xuất cơ sở dữ liệu nào bạn có trong tâm trí và nếu bạn có hệ thống cơ sở dữ liệu trong tầm tay. Nếu bạn đang nghĩ đến việc truy cập MS, điều này sẽ sử dụng lại động cơ phản lực một lần nữa, với những ưu và nhược điểm tương tự như cách tiếp cận 1 ở trên.

Các tùy chọn khác:

4. viết một macro VBA Excel để đọc dữ liệu bạn cần và ghi nó vào một tệp văn bản. Đọc tệp văn bản từ chương trình C#. Pro: nhanh hơn nhiều so với phương pháp 2, với tính linh hoạt tương tự trong việc truy cập thông tin meta. Con: bạn phải chia chương trình của bạn thành phần VBA và phần C#. Và bạn cần MS Excel trên máy của bạn.

5. Sử dụng thư viện/thành phần của bên thứ ba cho tác vụ này. Có rất nhiều thư viện cho công việc, miễn phí và thương mại. Chỉ cần hỏi Google hoặc tìm kiếm ở đây trên SO.Rất nhiều libs không yêu cầu MS Excel trên máy, và chúng thường là lựa chọn tốt nhất nếu bạn định trích xuất dữ liệu như một phần của quá trình máy chủ.

+0

Ngoài ra, bạn không thể sử dụng đối tượng Excel Interop trên máy không có Office được cài đặt – BornToCode

+0

@BornToCode: cảm ơn nhận xét, tôi đã chỉnh sửa câu trả lời của mình cho phù hợp. –

2

Tùy chọn 1 và 2 hầu như luôn luôn là một bài tập trong đau đớn, bất kể bạn đặt câu hỏi như thế nào.

Nếu bạn có thể sử dụng SSIS để chuyển dữ liệu vào cơ sở dữ liệu và nếu điều đó phù hợp với nhu cầu của bạn vì các yêu cầu khác, đó cũng là một lựa chọn tốt.

Nhưng tùy chọn ưa thích thường là sử dụng Office Open XML cho Excel 2007 trở lên. Điều đó không có các cơn đau đầu COM bạn nhận được với Tùy chọn 2 và không có vấn đề nào bạn có với các loại hàng đoán như bạn có với Tùy chọn 1.

Với câu hỏi được tạo cẩn thận hơn, bạn có thể nhận được câu trả lời tốt hơn, Tuy nhiên.

Các vấn đề liên quan