2012-02-07 4 views
5

私はいくつかの異なる形式からデータをインポートできるアプリケーションに取り組んでいます。私はCSVと他のフラットファイルタイプ(簡単)とXLSとXLSXを含めたいと思います。
私の最良の選択肢は、Excelがインストールされている場合にのみ理解できるInterop.Excelを使用することです。
Interop.Excelが利用可能かどうかをチェックし、XLS/XLSXからインポートするためにExcelをインストールする必要があることをユーザーに伝える方法はありますか?Microsoft.Office.Interop.Excelの可用性を確認します。

答えて

7

Microsoft.Office.Interop.Excelは、クライアントにOfficeがインストールされているかどうかにかかわらず、アプリケーションと共に出荷できるOffice Primary Interop Assemblyです。あなたがそれを使い始めるまでは何の害も及ぼしません。だから、それを使用する前にlook at the registry Officeがインストールされているかどうかを確認することができます。

+0

レジストリを確認することは私にとっては奇妙なようですが、それが通常行われている方法であれば、私はそうすると思います。 – yakatz

+1

これはどのように答えですか?オフィスがインストールされているかどうかを確認しても、Interopコンポーネントもインストールされているとは限りません。問題は、interopアセンブリが検出され、インストーラの前提条件にそれらを追加する方法ではないことです。リフレクションを使用してアセンブリを検出できます。 – Kris

1

ネイティブのMicrosoft Excelファイルをサポートし、Microsoft Excelに依存したくない場合は、OpenXMLを調べてください。これは、新しいExcel XML形式のファイルでのみ機能します。あなたのニーズが単純で、旧式の形式のExcelファイルまたはCSVファイルからデータを読み取る必要がある場合は、AceプロバイダーまたはMicrosoft Jet OLE DB 4.0プロバイダーを使用することができます。

OpenXMLは、新しいXML形式のExcelファイルに書き込む。 StackOverflowには、チェックアウトする価値のあるOpenXMLの使用に関する詳細がいくつかあります。

+1

これは元の質問を解決しません。あなたの提案ステイルには、最終的にあなたがチェックする必要がある外部依存関係が必要です。 – Kris

+0

どのような外部依存関係ですか?彼は彼のプロジェクトからDocument.OpenXMLアセンブリを参照する必要があり、彼のアプリケーションと共に展開することができます。エンドユーザーはExcelをインストールする必要はありません。同様に、Microsoft Jet OLEDB 4.0プロバイダには、新しいバージョンのWindowsオペレーティングシステムが搭載されており、必要に応じてOpenXMLアセンブリおよびCSVファイルでサポートされていない古い形式のスプレッドシートを読み取るために、 – codechurn

+0

@ Art:質問はアセンブリの検出に関するものでした。それを前提条件として含めるのではなく...あなたのソリューションは、彼の最初の問題と同じです。エンドユーザーは実際にExcelをインストールする必要はありませんが、代わりにOpenOfficeまたは何かがels ... – Kris

関連する問題