2016-11-06 9 views
0

Excelでスプレッドシートを読み込んでデータに対する操作を実行するアプリケーションを作成しました。 Excel 2010と2013を使用してアプリケーションを作成しました。私の会社は最近Office 365に行きました。アプリケーションを実行すると、以下のエラーが表示されます。私はこれがMicrosoft.Office.Interop.Excelと関係があると仮定していますが、このエラーとそれを修正する方法に関する情報は見つかりません。Visual StudioでC#を使用してMicrosoft Excel 365にアクセスする方法

"CLSID {00024500-0000-0000-C000-000000000046}のコンポーネントのCOMクラスファクトリの取得に失敗しました:80040154クラスが登録されていません(HRESULTの例外:0x80040154(REGDB_E_CLASSNOTREG))。

+0

Office Developer Toolsを更新する必要があります。 – McNets

+0

#mcNets - 最新のOffice Developer Toolsがインストールされています。Office 365ツールの場所はわかりますか? – Cass

答えて

0

Excelアプリケーション自体を制御する必要がない場合は、実際にinteropは必要ありません。 xlsxシートからデータを読み取る方法については、this questionまたはthisへの回答を参照してください。 OleDbについて説明しているneat article on codeprojectもあります。

+0

#Nomenator - あなたはこれらのオプションについて経験がありますか?あなたはLinq-toExcelかOleDbConnectionをお勧めしますか? – Cass

+0

@Cass Linq-to-Excelを使用する理由は、ファイルをエンティティにマップした後でエンティティフレームワークのデータソースであるかのようにExcelファイルをクエリできます。私はシーンの背後にどれくらい速くて遅いかはわかりませんが、オブジェクトと直接データをやりとりしてlinqを使うのはずっと速い開発になります。 – Nomenator

+0

#Nomenator - Linq-to-Excelは.xlsファイルでのみ動作しますか?私はxlsxファイルがありますが、このエラーが発生しています: "ファイルまたはアセンブリ 'LinqToExcel、バージョン= 1.10.1.0、Culture =ニュートラル、PublicKeyToken = 9c8ea65a58f03f1fまたはその依存関係のいずれかを読み込めませんでした。間違ったフォーマットを使用しています。 – Cass

0

コンピュータがOffice 365にアップグレードされたときと全く同じ例外に直面しました。私のC#コードでは、以前の ".xlsx"ファイルに保存されたテストデータを使用していました。

Excelファイル名を ".xls"に変更し、Microsoft.Office.Interop.ExcelライブラリのExcel.Applicationや他のクラスを利用していたのと同じコードを実行しましたが、うまくいきました。

関連する問題