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
Microsoft.Office.Interop.Excel
là Office 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.
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.
Đ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
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
@ 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
này có thể làm việc trong các tính chất của dự án của bạn:
http://s11.photobucket.com/albums/a199/markawil/?action=view¤t=Untitled.png
Bạn có thể cố gắng sử dụng các khái niệm trình bày chi tiết ở đây:
How to detect .NET 2.0 vs. .NET 4.0 assemblies, and x86 vs. x64 vs. AnyCPU
Nhưng cũng:
How to detect if another assembly is available to my application or not
- 1. Phát hiện xem cần tây có sẵn/Chạy
- 2. Excel dll cho Microsoft.Office.Interop.Excel
- 3. Microsoft.Office.Interop.Excel thực sự chậm
- 4. Làm cách nào để phát hiện thiết bị đã được phát hiện và ghép nối có sẵn?
- 5. Mongoose phát hiện cơ sở dữ liệu chưa sẵn sàng
- 6. Microsoft.Office.Interop.Excel không hoạt động trên 64 bit
- 7. Phát hiện nếu Thông báo phong phú trong Chrome có sẵn
- 8. Phát hiện với JavaScript hoặc jQuery nếu CSS chuyển đổi 2D có sẵn
- 9. Phát hiện xem mã thông báo giao diện người dùng có sẵn để thực thi
- 10. Android WIFI Cách phát hiện khi kết nối WIFI cụ thể có sẵn
- 11. Các IDE có sẵn cho phát triển gtk +
- 12. Làm thế nào tôi có thể phát hiện DOM đã sẵn sàng và thêm một lớp không có jQuery?
- 13. Phát hiện trình phát hiện tệp PDF trong Safari
- 14. Phát hiện ngôn ngữ
- 15. Phát hiện xem các phím có sẵn trên bàn phím ảo trên thiết bị di động hay không
- 16. Microsoft.Office.Interop.Excel: Cách Áp dụng đường viền cho ONE CELL
- 17. Đọc dữ liệu từ excel 2010 bằng Microsoft.Office.Interop.Excel
- 18. Phát hiện xem nhạc có đang phát không?
- 19. Phát hiện xem phần tử Video HTML5 có đang phát
- 20. Phát hiện các phím có thể in
- 21. Phát hiện xem HttpModule có được nạp
- 22. Phát hiện xem tai nghe có micrô
- 23. Phát hiện xem RichTextBox có trống không
- 24. Cách phát hiện xem Micrô có hiện diện không
- 25. Phát hiện xem văn bản bằng tiếng Anh có python
- 26. Phát hiện iPad với ASP.net
- 27. RPC có sẵn?
- 28. Không có sẵn
- 29. Trình phát hiện va chạm/phát hiện va chạm voxel
- 30. Trạng thái phát hiện phát hiện vấn đề trong DataGridView
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
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