私はいくつかの異なる形式からデータをインポートできるアプリケーションに取り組んでいます。私はCSVと他のフラットファイルタイプ(簡単)とXLSとXLSXを含めたいと思います。
私の最良の選択肢は、Excelがインストールされている場合にのみ理解できるInterop.Excelを使用することです。
Interop.Excelが利用可能かどうかをチェックし、XLS/XLSXからインポートするためにExcelをインストールする必要があることをユーザーに伝える方法はありますか?Microsoft.Office.Interop.Excelの可用性を確認します。
答えて
Microsoft.Office.Interop.Excel
は、クライアントにOfficeがインストールされているかどうかにかかわらず、アプリケーションと共に出荷できるOffice Primary Interop Assemblyです。あなたがそれを使い始めるまでは何の害も及ぼしません。だから、それを使用する前にlook at the registry Officeがインストールされているかどうかを確認することができます。
ネイティブのMicrosoft Excelファイルをサポートし、Microsoft Excelに依存したくない場合は、OpenXMLを調べてください。これは、新しいExcel XML形式のファイルでのみ機能します。あなたのニーズが単純で、旧式の形式のExcelファイルまたはCSVファイルからデータを読み取る必要がある場合は、AceプロバイダーまたはMicrosoft Jet OLE DB 4.0プロバイダーを使用することができます。
OpenXMLは、新しいXML形式のExcelファイルに書き込む。 StackOverflowには、チェックアウトする価値のあるOpenXMLの使用に関する詳細がいくつかあります。
これは元の質問を解決しません。あなたの提案ステイルには、最終的にあなたがチェックする必要がある外部依存関係が必要です。 – Kris
どのような外部依存関係ですか?彼は彼のプロジェクトからDocument.OpenXMLアセンブリを参照する必要があり、彼のアプリケーションと共に展開することができます。エンドユーザーはExcelをインストールする必要はありません。同様に、Microsoft Jet OLEDB 4.0プロバイダには、新しいバージョンのWindowsオペレーティングシステムが搭載されており、必要に応じてOpenXMLアセンブリおよびCSVファイルでサポートされていない古い形式のスプレッドシートを読み取るために、 – codechurn
@ Art:質問はアセンブリの検出に関するものでした。それを前提条件として含めるのではなく...あなたのソリューションは、彼の最初の問題と同じです。エンドユーザーは実際にExcelをインストールする必要はありませんが、代わりにOpenOfficeまたは何かがels ... – Kris
このプロジェクトのプロパティで働くかもしれない:
http://s11.photobucket.com/albums/a199/markawil/?action=view¤t=Untitled.png
あなたがここに詳述する概念を使用するように試みることができる:
How to detect .NET 2.0 vs. .NET 4.0 assemblies, and x86 vs. x64 vs. AnyCPU
しかし、また:
How to detect if another assembly is available to my application or not
- 1. コーチの可用性を確認する
- 2. ASP.NET ClientSideEventsを使用したUserNameの可用性の確認
- 3. JavaScriptを使用してオブジェクトの可視性を確認する
- 4. ナビゲーションバーの可視性を確認する
- 5. Robotiuminを使用して、Androidのネットワーク接続の可用性を確認するテストケースを確認する方法
- 6. 可用性ゾーンを実行しているAWSラムダを確認
- 7. beautifulsoupを使って図書の可用性を確認する
- 8. ライブラリのブックの可用性を確認するSQL Serverクエリ
- 9. WiXのTCPポートの可用性を確認する
- 10. Windows MobileでGPRSの可用性を確認する
- 11. iOSで実行時にブロックの可用性を確認する
- 12. リスナーがxamarinフォームでインターネットの可用性を確認する
- 13. DNSでドメインの可用性を確認する
- 14. ネットワークの可用性を確認するには?
- 15. 要素の可視性の確認
- 16. Capybaraとの可視性の確認
- 17. 画像ファイルの可視性の確認
- 18. bashスクリプトでpingを使用してホストの可用性を確認する
- 19. ユーザ名を確認する可用性問題
- 20. 保存ボタンで可用性確認機能を実装する
- 21. テーブルの行の可視性を確認して設定する
- 22. Railsからドメインの可用性を確認
- 23. github apiを使用してブランチのマージ可能性を確認する方法
- 24. Ifステートメントを使用して3つの可能性を確認する
- 25. IFを使用してTextViewの可視性を確認する方法
- 26. viewDidAppearまたはAppDelegateの到達可能性を確認しますか?
- 27. jspのフォームでユーザーの可用性を確認してください
- 28. Javaからのサービスの可用性を確認してください
- 29. JQUERY AJAX laravel 5.2ユーザー名可用性確認
- 30. Selenium Web Driverを使用したIE保存ダイアログの可視性確認
レジストリを確認することは私にとっては奇妙なようですが、それが通常行われている方法であれば、私はそうすると思います。 – yakatz
これはどのように答えですか?オフィスがインストールされているかどうかを確認しても、Interopコンポーネントもインストールされているとは限りません。問題は、interopアセンブリが検出され、インストーラの前提条件にそれらを追加する方法ではないことです。リフレクションを使用してアセンブリを検出できます。 – Kris