12

データを読み取るには、Excel2007ファイルを使用する必要があります。そのための最良の方法は次のとおりです。

  1. OLEDBプロバイダーの使用
  2. Excel相互運用オブジェクト
  3. Excelデータをデータベースにダンプして手順を使用する

親切に私を選んでください。

4

2 に答える 2

19

これが私の意見です:

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を必要とせず、サーバープロセスの一部としてデータを抽出する場合は、通常、これらのライブラリが最適なオプションです。

于 2010-10-07T21:10:55.687 に答える
2

オプション1と2は、どのように質問しても、ほとんどの場合、苦痛を伴う運動です。

SSISを使用してデータをデータベースに移動でき、それが他の要件のためにニーズに合っている場合は、それも適切なオプションです。

ただし、通常は、Office Open XML forExcel2007以降を使用することをお勧めします。これには、オプション2で発生するCOMの問題はなく、オプション1の場合のように行タイプを推測する際の問題もありません。

ただし、より慎重に作成された質問を使用すると、はるかに優れた回答を得ることができます。

于 2010-08-31T11:43:58.137 に答える