[HOWTO] ASP.NET、ADO.NET、および Visual C# .NET による Excel データの取得と表示方法

文書翻訳 文書翻訳
文書番号: 306572 - 対象製品
この記事は、以前は次の ID で公開されていました: JP306572
すべて展開する | すべて折りたたむ

目次

概要

この資料では、Visual C# .NET を使用して ASP.NET (.aspx) ページに Excel ワークシートのデータを表示する方法を、手順を追って説明します。


Excel ワークシートのサンプルを作成する

  1. Microsoft Excel を起動し、新しいワークシートを作成します。
  2. 新しいワークシートに次の情報を追加して、簡単な Excel データベースを作成します。
    元に戻す全体を表示する
    A B
    1 FirstName LastName
    2 Scott Bishop
    3 Katie Jordan
    : このサンプルのデータはセル A1 から始まっていますが、セルが連続していればワークシート内の任意の場所に追加できます。
  3. データを追加した行と列を選択します。
  4. [挿入] メニューの [名前] をポイントし、[定義] をクリックします。
  5. [名前] ボックスに myRange1 と入力し、[OK] をクリックします。
  6. [ファイル] メニューの [上書き保存] をクリックします。[保存先] ボックスの一覧で Web サーバーのルート (通常は C:\InetPub\Wwwroot\) を選択します。[ファイル名] ボックスに ExcelData.xls と入力し、[OK] をクリックします。
  7. [ファイル] メニューの [終了] をクリックします。

Visual C# .NET を使用して ASP.NET のサンプルを作成する

ここで使用するサンプル コードでは、Excel ワークシートに対してクエリを実行し、取得した情報を表示する方法を示しています。以下のコードでは、前の手順で作成したワークシートが使用されます。
  1. Microsoft Visual Studio .NET を起動します。Visual Studio .NET 統合開発環境 (IDE) が表示されます。
  2. [ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
  3. [新しいプロジェクト] ダイアログ ボックスで、[プロジェクトの種類] ボックスの一覧の [Visual C# プロジェクト] をクリックし、[テンプレート] ボックスの一覧の [ASP.NET Web アプリケーション] をクリックします。
  4. [新しいプロジェクト] ダイアログ ボックスで、[プロジェクト名] および [場所] ボックスを確認します。[プロジェクト名] ボックスは使用できない状態 (淡色表示) になっています。[場所] ボックスには、以下のテキスト (または類似したテキスト) が表示されます。
    http://localhost/WebApplication1
    [場所] ボックスのテキストを http://localhost/ExcelCSTest に置き換え、[OK] をクリックします。WebForm1.aspx という名前の Web フォームを含む新しいプロジェクトが作成されます。
  5. Visual Studio .NET IDE でソリューション エクスプローラ ウィンドウを探します。見つからない場合は、[表示] メニューの [ソリューション エクスプローラ] をクリックします。
  6. ソリューション エクスプローラで [WebForm1.aspx] を右クリックし、[デザイナの表示] をクリックして、ページの外観を示すデザイナを表示します。デザイナでは、コントロールの追加、またはページ デザインの操作を実行できます。
  7. ツールボックスを探します。ツールボックスは、IDE オプションの設定に応じてウィンドウまたはボタンとして表示されます (通常、ボタンは IDE の左端に表示されます)。ツールボックスが見つからない場合は、[表示] メニューの [ツールボックス] をクリックします。

    ツールボックスがボタンとして表示されている場合は、ポインタをボタンの上に移動してツールボックスの内容を表示します。
  8. Web フォームのデザイナ ビューがアクティブになっていると、ツールボックスが複数のセクションに分割され、[Web フォーム]、[コンポーネント]、[HTML] などのセクションが表示されます。[Web フォーム] セクションをクリックします。
  9. ツールボックスの [Web フォーム] セクションで [DataGrid] をクリックし、WebForm1 のデザイナ ウィンドウへドラッグします。
  10. WebForm1.aspx ファイルを右クリックし、[コードの表示] をクリックして、コード ビハインド ページのソースを表示します。
  11. コード ビハインド ページの先頭の名前空間セクションの上に、以下のステートメントを追加します。
    using System.Data.OleDb;
    using System.Data;
    					
  12. 以下のコードを選択して右クリックし、[コピー] をクリックします。このコードを WebForm1.aspx.cs の Page_Load イベントに貼り付けます。
    // 接続文字列変数を作成します。使用環境に応じて
    // "Data Source" パラメータを変更してください。
    String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
    	"Data Source=" + Server.MapPath("../ExcelData.xls") + ";" +
    	"Extended Properties=Excel 8.0;";
    // 上記の接続文字列を使用して接続オブジェクトを作成します。
    OleDbConnection objConn = new OleDbConnection(sConnectionString);
    // データベースとの接続を開きます。
    objConn.Open();
    // 以下のコードでは、SQL SELECT コマンドを使用してワークシートからデータを表示します。
    // ワークシートからデータを返す新規の OleDbCommand を作成します。
    OleDbCommand objCmdSelect =new OleDbCommand("SELECT * FROM myRange1", objConn);
    // 上記の SQL SELECT ステートメントに基づいて DataSet を作成するのに
    // 使用する、新規の OleDbDataAdapter を作成します。
    OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
    // Select コマンドをアダプタに渡します。
    objAdapter1.SelectCommand = objCmdSelect;
    // ワークシートからの情報を格納する新規の DataSet を作成します。
    DataSet objDataset1 = new DataSet();
    // DataSet にワークシートからの情報を入力します。
    objAdapter1.Fill(objDataset1, "XLData");
    // データをデータ グリッド コントロールに連結します。
    DataGrid1.DataSource = objDataset1.Tables[0].DefaultView;
    DataGrid1.DataBind();
    // オブジェクトをクリーンアップします。
    objConn.Close();
    					
  13. [ファイル] メニューの [すべてを保存] をクリックし、プロジェクトの各ファイルを保存します。
  14. [ビルド] メニューの [ソリューションのビルド] をクリックし、プロジェクトをビルドします。これにより、コード ビハインド ページのコードを実行できるようになります。
  15. コードを実行するには、ソリューション エクスプローラで [WebForm1.aspx] を右クリックし、[ブラウザで表示] をクリックします。

コードについての補足説明

この資料のサンプル コードでは、Microsoft Jet OLE DB プロバイダを使用して Excel ワークシートにアクセスしています。以下の接続文字列を使用してワークシートに接続します。
// 接続文字列のための変数を作成します。使用環境に応じて
// "Data Source" パラメータを変更してください。
String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
	"Data Source=" + Server.MapPath("../ExcelData.xls") + ";" +
	"Extended Properties=Excel 8.0;";
				
コメントに記載されているように、特定の Excel ワークシートを指すようにパス情報を変更する必要があります。また、ファイルに正しく接続するためには、Extended Properties パラメータの値も設定する必要があります。

この接続文字列では、Server.MapPath 関数が使用されていることに注意します。この関数は、ファイルのパスを Microsoft インターネット インフォメーション サービス (IIS) からの相対パスとして受け取り、ハード ディスク上でのファイルのパスを返します。たとえば、「Excel ワークシートのサンプルを作成する」では、Web ルート ディレクトリ (通常は C:\Inetpub\Wwwroot) に ExcelData.xls を作成しています。さらに、Wwwroot フォルダには ExcelCSTest という名前のサブフォルダが作成され、ExcelCSTest フォルダには WebForm1.aspx という名前のファイルが作成されます。

このサンプルでは、ハード ディスク上のファイルへのパスは次のようになります。
     C drive
        - Inetpub
            - Wwwroot (ExcelData.xls を含む)
                - ExcelCSTest (WebForm1.aspx を含む)
				
これらのファイルの IIS パスは次のとおりです。
     Web Root (ExcelData.xls を含む)
        - ExcelCSTest (WebForm1.aspx を含む)
				
この場合、WebForm1.aspx ページからの ExcelData.xls ファイルへの相対パスは "../ExcelData.xls" です。"../" という文字列で、1 つ上のフォルダへ移動するように IIS に通知します。
Server.MapPath("../ExcelData.xls")
				
上記のコードは、次の文字列を返します。
C:\Inetpub\Wwwroot\ExcelData.xls
Server.MapPath は使用しなくてもかまいません。ハードディスク上の Excel ファイルの場所を指定するには、特定のパスへの情報を直接コード内に記述 (ハード コード) するなど、任意の方法を使用できます。

関連情報

ASP.NET を使用して Excel ファイルにアクセスする方法の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
307029 [HOW TO] Visual C# .NET を使って XML データを Microsoft Excel 2002 に転送する方法
306023 [HOWTO] Visual C# .NET を使用してデータを Excel ブックに転送する方法
ADO.NET を使用する方法の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
306636 [HOW TO] ADO.NET と Visual C# .NET を使用して、データベースに接続し、コマンドを実行する方法
314145 [HOW TO] Visual C# .NET を使用してデータベースから DataSet オブジェクトにデータを設定する
307587 [HOW TO] Visual C# .NET を使用して、DataSet オブジェクトからデータベースを更新する方法
: ここに記載されている企業、組織、製品、ドメイン名、電子メール アドレス、ロゴ、人物、場所、およびイベントの例は架空のものです。実在の企業、組織、製品、ドメイン名、電子メール アドレス、ロゴ、人物、場所、またはイベントとの関連を示唆するものではありません。

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 306572 (最終更新日 2003-06-05) を基に作成したものです。

この資料に含まれているサンプル コード/プログラムは英語版を前提に書かれたものをありのままに記述しており、日本語環境での動作は確認されておりません。

プロパティ

文書番号: 306572 - 最終更新日: 2004年6月23日 - リビジョン: 4.3
この資料は以下の製品について記述したものです。
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft ADO.NET 1.1
  • Microsoft ADO.NET (included with the .NET Framework)
キーワード:?
kbdatabase kbhowtomaster kbwebforms KB306572
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com