データを読み取るには、Excel2007ファイルを使用する必要があります。そのための最良の方法は次のとおりです。
- OLEDBプロバイダーの使用
- Excel相互運用オブジェクト
- Excelデータをデータベースにダンプして手順を使用する
親切に私を選んでください。
データを読み取るには、Excel2007ファイルを使用する必要があります。そのための最良の方法は次のとおりです。
親切に私を選んでください。
これが私の意見です:
1
。OLEDBプロバイダーの使用
シンプルで均一な構造のテーブルがある場合にのみ、ニーズに適合します。たとえば、セルの書式設定情報を抽出する必要がある場合など、あまり役に立ちません。Jetエンジンのバグのある「行型推測」アルゴリズムにより、このアプローチはほとんど使用できなくなる可能性があります。ただし、各テーブルの最初の数行からデータ型を一意に識別できる場合は、このアプローチで十分な場合があります。Pro:高速で、MSExcelがインストールされていないマシンでも動作します。
2
。Excel相互運用オブジェクト
特にオプション1と比較すると、非常に遅い場合があり、MSExcelをインストールする必要があります。ただし、Excelのオブジェクトモデルに完全にアクセスでき、Excelファイルに保存されているほぼすべての情報(たとえば、書式設定情報、色、フレームなど)を抽出でき、シートは必要に応じて複雑な構造にすることができます。
3
。Excelデータをデータベースにダンプして手順を使用する
念頭に置いているデータベースダンプの種類と、データベースシステムが手元にあるかどうかによって異なります。MS Accessを考えている場合、これは、上記のアプローチ1と同じ長所と短所を使用して、内部でJetエンジンを再び使用します。
別のオプション:
4
。Excel VBAマクロを記述して、必要なデータを読み取り、テキストファイルに書き込みます。C#プログラムからテキストファイルを読み取ります。長所:アプローチ2よりもはるかに高速で、メタ情報へのアクセスに同じ柔軟性があります。短所:プログラムをVBA部分とC#部分に分割する必要があります。そして、あなたはあなたのマシンにMSExcelを必要とします。
5
。このタスクには、サードパーティのライブラリ/コンポーネントを使用してください。仕事のためのたくさんの図書館があります、無料のものと商業的なもの。Googleに質問するか、ここでSOを検索してください。これらのライブラリの多くは、マシン上でMS Excelを必要とせず、サーバープロセスの一部としてデータを抽出する場合は、通常、これらのライブラリが最適なオプションです。
オプション1と2は、どのように質問しても、ほとんどの場合、苦痛を伴う運動です。
SSISを使用してデータをデータベースに移動でき、それが他の要件のためにニーズに合っている場合は、それも適切なオプションです。
ただし、通常は、Office Open XML forExcel2007以降を使用することをお勧めします。これには、オプション2で発生するCOMの問題はなく、オプション1の場合のように行タイプを推測する際の問題もありません。
ただし、より慎重に作成された質問を使用すると、はるかに優れた回答を得ることができます。