2011-08-09 38 views
6

Tôi đã bắt đầu sử dụng các hội đồng interop của Excel được Microsoft cung cấp cho một trong các ứng dụng C# của tôi. Mọi thứ đều ổn, nhưng có vẻ như thiếu sự đánh máy mạnh mẽ, và thành thật mà nói nó giống như tôi đang viết mã VBA. Có cách nào khác để tương tác với Excel từ C# có thể mang đến trải nghiệm OO tốt hơn không? Tôi đang sử dụng VS2010 và .Net 4.0 bằng cách này.excel interop thay thế

+0

Vấn đề chính bạn gặp phải là gì? Bạn nhận được rất nhiều loại động và không có intellisense hoặc là nó mô hình đối tượng văn phòng đó là (theo thiết kế) rất chung chung? – Eddy

+0

Tôi nghĩ bạn có nghĩa là nhập "mạnh" và không phải là "chuỗi". – Davy8

Trả lời

0

Bạn đang tìm kiếm loại tương tác nào? Chỉ cần viết? đọc hiểu? Kiểm soát hoàn toàn mọi khía cạnh?

Có rất nhiều thư viện của bên thứ ba để thao tác các tài liệu Excel, đặc biệt nếu bạn ở định dạng xlsx (2007 hoặc mới hơn). Nếu bạn chỉ đơn giản là viết những điều trên, thậm chí có cả các triển khai mã nguồn mở mà bạn có thể xem (ví dụ: Sourceforge có số Excel Writer).

-2

Tự động hóa OLE là cách tiêu chuẩn của Windows cho các ứng dụng để giao tiếp, trừ Clipboard. Bởi vì không phải mọi ngôn ngữ cần OLE đều có generics (hoặc thậm chí là gõ tĩnh mạnh), giao diện nhất thiết phải rất chung chung.

Nếu bạn chỉ đơn giản từ chối sử dụng OLE, bạn có thể sử dụng máy chủ lưu trữ Windows để di chuyển xung quanh GUI và lấy dữ liệu theo cách đó hoặc quét màn hình bằng các DLL WinAPI. Bạn cũng có thể viết hoặc vuốt một ETL cho các tệp Excel dựa trên các tiêu chuẩn tài liệu cho các tệp XLS và XLSX. Bất kỳ cách nào bạn cắt nó, tôi nghĩ rằng những bất lợi khi làm việc với OLE được giảm thiểu bởi lợi thế cực độ mà bạn không phải cố gắng tương tác với Excel theo bất kỳ cách nào khác.

1

Tùy thuộc vào những gì bạn đang cố gắng làm, như tạo tài liệu XLSX, bạn có thể sử dụng Open XML SDK.

Điều này thật tuyệt vời khi tạo tài liệu văn phòng; đặc biệt là vì nó không yêu cầu văn phòng phải được cài đặt để sử dụng.

Hoàn toàn miễn phí; API sạch đẹp và được hỗ trợ bởi Microsoft. Ví dụ:

public static void CreateNewWordDocument(string document) 
{ 
    using (WordprocessingDocument wordDoc = WordprocessingDocument.Create(document, WordprocessingDocumentType.Document)) 
    { 
     // Set the content of the document so that Word can open it. 
     MainDocumentPart mainPart = wordDoc.AddMainDocumentPart(); 

     SetMainDocumentContent(mainPart); 
    } 
} 

Ví dụ từ: http://msdn.microsoft.com/en-us/library/bb497758.aspx. Có các ví dụ để làm việc với Bảng tính here.

Nếu bạn đang cố gắng tương tác trực tiếp với Excel (Giống như tự động hóa giao diện người dùng); không tạo ra một tài liệu; thì câu trả lời của KeithS là tôi sẽ đi như thế nào.

+0

Chăm sóc cử tri xuống để bình luận? – vcsjones

1

Thư viện NetOffice là một thay thế cho Hội đồng Interop Office chính (PIA). NetOffice cung cấp một bộ các thư viện interop độc lập với phiên bản, vì vậy bạn có thể hỗ trợ tất cả các phiên bản Office với ứng dụng của mình và bao gồm IntelliSense để cho bạn thấy những phương thức nào có sẵn theo phiên bản Office nào.

NetOffice cũng giúp một chút trong việc theo dõi các tham chiếu COM, đôi khi có thể là một cơn đau trong .NET/COM interop.

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