2012-02-07 28 views
5

Tôi đang làm việc trên một ứng dụng có thể nhập dữ liệu từ nhiều định dạng khác nhau. Tôi muốn bao gồm CSV và các loại tệp phẳng khác (dễ) cũng như XLS và XLSX.
Dường như tùy chọn tốt nhất của tôi là sử dụng Interop.Excel mà tôi hiểu chỉ khả dụng nếu Excel được cài đặt.
Có cách nào để kiểm tra xem Interop.Excel có sẵn và cho người dùng biết rằng Excel phải được cài đặt để nhập từ XLS/XLSX không?Phát hiện Microsoft.Office.Interop.Excel Sẵn có

Trả lời

7

Microsoft.Office.Interop.ExcelOffice Primary Interop Assembly mà bạn có thể gửi cùng với ứng dụng của mình cho dù khách hàng có cài đặt Office hay không. Nó sẽ không gây hại gì cho đến khi bạn bắt đầu sử dụng nó. Vì vậy, trước khi sử dụng nó, bạn có thể look at the registry để xem Office có được cài đặt hay không.

+0

Kiểm tra sổ đăng ký có vẻ lạ đối với tôi, nhưng nếu đó là cách nó thường được thực hiện, tôi cho rằng tôi sẽ làm như vậy. – yakatz

+1

Câu trả lời này như thế nào? Kiểm tra nếu văn phòng được cài đặt sẽ không nhất thiết có nghĩa là các thành phần interop cũng được cài đặt. Câu hỏi là wheter hoặc không phải là hội đồng interop có thể được phát hiện và không làm thế nào để thêm chúng vào prereqs cài đặt. Hội đồng có thể được phát hiện, sử dụng sự phản chiếu. – Kris

1

Nếu bạn muốn hỗ trợ tệp Microsoft Excel gốc và không muốn phụ thuộc vào Microsoft Excel, hãy xem xét OpenXML. Thao tác này sẽ chỉ hoạt động với các tệp được định dạng Excel XML mới hơn. Nếu nhu cầu của bạn rất đơn giản và bạn chỉ cần đọc dữ liệu từ tệp Excel đã được định dạng cũ hoặc tệp CSV, bạn có thể sử dụng nhà cung cấp Ace và/hoặc nhà cung cấp Microsoft Jet OLE DB 4.0

OpenXML cho phép bạn đọc/ghi vào các tệp Excel được định dạng XML mới. Có một số luồng trên StackOverflow với nhiều thông tin hơn về cách sử dụng OpenXML đáng để kiểm tra.

+1

Điều này không giải quyết được câu hỏi gốc. Đề xuất của bạn stil đòi hỏi một sự phụ thuộc bên ngoài mà cuối cùng bạn vẫn sẽ cần phải kiểm tra ... – Kris

+0

Những gì phụ thuộc bên ngoài? Anh ta sẽ cần tham khảo assembly Document.OpenXML từ dự án của mình và có thể triển khai nó với ứng dụng của mình. Người dùng cuối sẽ không cần phải cài đặt Excel. Tương tự như vậy, nhà cung cấp Microsoft Jet OLEDB 4.0 hiện diện với các phiên bản mới hơn của hệ điều hành Windows và có thể được ứng dụng của anh thừa hưởng để đọc các bảng tính định dạng cũ hơn không được hỗ trợ bởi các tệp CSV và OpenXML nếu cần. – codechurn

+0

@ Nghệ thuật: Câu hỏi là về việc phát hiện một hội đồng. Không phải về việc bao gồm nó như là một điều kiện tiên quyết ... Giải pháp của bạn cũng giống như vấn đề ban đầu của anh ấy. Người dùng cuối thực sự sẽ không cần phải cài đặt Excel nhưng OpenOffice hoặc một cái gì đó thay thế ... – Kris

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