2009-04-16 57 views
5

Tôi cần nhúng phần bảng tính excel (không phải toàn bộ trang tính) trong điều khiển người dùng bằng ngôn ngữ C#. Và tôi muốn thao tác dữ liệu trên đó và lưu nó vào bộ sưu tập.Nhúng bảng excel trong điều khiển người dùng C#

Cách tốt nhất để làm gì?

+0

Bạn chỉ cần hiển thị dữ liệu ở định dạng bảng hay bạn thực sự cần công cụ hiển thị Excel? Bạn chỉ có thể đọc tệp excel và hiển thị nó trong một DataGridView. Nếu không, bạn sẽ cần phải làm một số công cụ OLE/COM (tôi giả sử) –

+0

Nếu bạn cần bảng excel, có tùy chọn đặt điều khiển WebBrowser trên biểu mẫu thắng và tải loại nội dung dưới dạng tài liệu excel. – jgallant

+0

Bất kỳ tùy chọn mới nào đã tăng từ năm 2009? – PPC

Trả lời

6

Tôi sẽ mở bảng tính bằng Thư viện COM của Excel. Nếu bạn thêm một tham chiếu đến Thư viện đối tượng Microsoft Excel, bạn có thể vào giao diện Com.

Thêm các báo cáo sử dụng:

using Microsoft.Office.Interop; 
using Microsoft.Office.Interop.Excel; 

Sau đó, bạn có thể đọc từ bảng tính bằng cách làm một cái gì đó như thế này:

private void GetData(string fileName, string tabName) 
    { 
     Workbook theWorkbook; 

     Application ExcelObj = null; 
     ExcelObj = new Application(); 

     theWorkbook = ExcelObj.Workbooks.Open(fileName, 
      Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
      Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
      Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
      Type.Missing, Type.Missing); 


     Sheets sheets = theWorkbook.Worksheets; 
     Worksheet worksheet = (Worksheet)sheets[tabName]; 

     Range range = worksheet.get_Range("A1:A1", Type.Missing); 

     string data = range.Text as string; 

     // 
     // TODO : store the data 
     // 

     theWorkbook.Close(false, fileName, null); 
    } 

Mã này sẽ đọc nội dung của ô A1 thành một chuỗi.

Một trong những điều kỳ quặc khi làm việc với giao diện Excel COM là bạn phải truy nhập dữ liệu trong một phạm vi, ngay cả khi bạn chỉ muốn một ô. Bạn có thể đặt phạm vi thành một nhóm ô, sau đó bạn có thể lặp qua bộ sưu tập mà nó trả về để lấy nội dung của mỗi ô.

Bạn cũng sẽ muốn thêm một số lỗi khi kiểm tra/xử lý tên tệp và tên tab.

Ngoài ra còn có cách sử dụng ODBC để đọc từ Excel, nhưng bảng tính phải được định dạng theo một cách nhất định. Có phải là một dữ liệu tiêu đề trong hàng 1. Tôi đã tìm thấy nó dễ dàng hơn để sử dụng giao diện COM.

Khi bạn đã có được dữ liệu bạn cần, bạn có thể đặt dữ liệu đó vào một Số liệu đã nhập. Sau đó, bạn có thể liên kết tập dữ liệu đó với một DataGridView nếu bạn đang sử dụng WinForms hoặc một ListBox trong WPF. Nếu bạn chỉ muốn lưu dữ liệu ở định dạng XML, bạn có thể sử dụng hàm WriteXml của DataSet để lưu trữ dữ liệu vào một tệp.

+0

Nếu bạn bỏ phiếu bình chọn, hãy giải thích lý do. – epotter

5

Tại sao không sử dụng số DataGridView được điền bằng dữ liệu bạn muốn thay đổi?

Sau khi mọi thay đổi hoàn tất, hãy lưu dữ liệu từ DataGridView qua phần của tệp Excel mà bạn đã kéo nó để bắt đầu.

Bạn cũng có thể tìm thấy theselinksuseful!

0

Xem thư viện Microsoft.Office.Interop.Excel. Có rất nhiều điều khiển excel trong đó để làm việc với các tập tin excel và hoạt động.

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