ASP.NET、ADO.NET、Visual C# .NET を使用して Excel データを照会して表示する

この記事では、Visual C# .NET を使用して、ASP.NET (.aspx) ページを使用して Excel ワークシートからデータを照会および表示する方法について説明します。

元の製品バージョン: ASP.NET
元の KB 番号: 306572

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

  1. Microsoft Excel を起動し、新しいワークシートを作成します。

  2. 次の情報を新しいワークシートに追加して、Excel データベースを作成します。

    行番号 A B
    1 FirstName LastName
    2 スコット Bishop
    3 ケイティ ヨルダン

    注:

    この例ではセル 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を右クリックし、[表示] Designerをクリックして、デザイナーにページの外観を表示します。 デザイナーを使用すると、コントロールを追加し、ページの外観を操作できます。

  7. ツールボックスを見つけます。 IDE オプションの設定によっては、ツールボックスをウィンドウまたはボタン (IDE の左側に表示されることがよくあります) として表示できます。 ツールボックスが見つからない場合は、[表示] メニューの [ツールボックス] をクリックします。

    ツールボックスがボタンとして表示される場合は、ツールボックスの内容が表示されるようにボタンの上にポインターを移動します。

  8. Web フォームのデザイナー ビューがアクティブな場合、ツールボックスは、Web FormsコンポーネントHTML、およびその他のセクションを含むセクションに分割されます。 [Web Forms] セクションをクリックします。

  9. ツールボックスの [Web Forms] セクションで、[DataGrid] をクリックし、WebForm1 のデザイナーにドラッグします。

  10. WebForm1.aspxを右クリックし、[コードの表示] をクリックして分離コード ページ ソースを表示します。

  11. 名前空間セクションの上にある分離コード ページの上部に、次のステートメントを追加します。

    using System.Data.OleDb;
    using System.Data;
    
  12. 次のコードを強調表示し、コードを右クリックし、[ コピー] をクリックします。 WebForm1.aspx.csで、イベントにコードをPage_Load貼り付けます。

    // Create connection string variable. Modify the "Data Source"
    // parameter as appropriate for your environment.
    String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
    "Data Source=" + Server.MapPath("../ExcelData.xls") + ";" +
    "Extended Properties=Excel 8.0;";
    
    // Create connection object by using the preceding connection string.
    OleDbConnection objConn = new OleDbConnection(sConnectionString);
    
    // Open connection with the database.
    objConn.Open();
    
    // The code to follow uses a SQL SELECT command to display the data from the worksheet.
    // Create new OleDbCommand to return data from worksheet.
    OleDbCommand objCmdSelect =new OleDbCommand("SELECT * FROM myRange1", objConn);
    
    // Create new OleDbDataAdapter that is used to build a DataSet
    // based on the preceding SQL SELECT statement.
    OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
    
    // Pass the Select command to the adapter.
    objAdapter1.SelectCommand = objCmdSelect;
    
    // Create new DataSet to hold information from the worksheet.
    DataSet objDataset1 = new DataSet();
    
    // Fill the DataSet with the information from the worksheet.
    objAdapter1.Fill(objDataset1, "XLData");
    
    // Bind data to DataGrid control.
    DataGrid1.DataSource = objDataset1.Tables[0].DefaultView;
    DataGrid1.DataBind();
    
    // Clean up objects.
    objConn.Close();
    
  13. [ ファイル ] メニューの [ すべて保存 ] をクリックして、プロジェクト ファイルを保存します。

  14. [ ビルド ] メニューの [ ビルド ] をクリックしてプロジェクトをビルドします。 この手順では、コードビハインド ページでコードを準備して、コードを実行できるようにします。

  15. ソリューション エクスプローラーでWebForm1.aspxを右クリックし、[ブラウザーで表示] をクリックしてコードを実行します。

追加のコードの説明

この記事のコード サンプルでは、Microsoft Jet OLE DB プロバイダーを使用して Excel ワークシートにアクセスします。 このコードでは、次の接続文字列を使用してワークシートに接続します。

// Create connection string variable. Modify the "Data Source"
// parameter as appropriate for your environment.
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 ワークシートの作成] セクションで、通常C:\Inetpub\Wwwrootは にある Web ルート ディレクトリに ExcelData.xls を作成します。 これにより、Wwwroot フォルダー内に ExcelCSTest という名前のサブフォルダーと、_ExcelCSTest_folder内に WebForm1.aspx という名前のファイルも作成されます。

この例では、ハード ディスク上のファイル パスは のようになります C:\Inetpub\Wwwroot\ExcelCSTestWwwroot には ExcelData.xlsが含まれています。 ExcelCSTest には WebForm1.aspxが含まれています。

ファイルへの IIS パスは のようになります C:\Web Root\ExcelCSTestWeb ルートには ExcelData.xlsが含まれており、ExcelCSTest にはWebForm1.aspxが含まれています

この場合、 WebForm1.aspx ページから ExcelData.xls ファイルへの相対パスは です。/ExcelData.xls../ 文字は、IIS に 1 つのフォルダー レベルを上げるよう通知します。 そのため、コード Server.MapPath("../ExcelData.xls") は次の文字列を返します。

C:\Inetpub\Wwwroot\ExcelData.xls

を使用 Server.MapPathする必要はありません。 また、この情報を特定のパスにハード コーディングすることも、任意のメソッドを使用して、ハード ディスク上の Excel ファイルの場所を指定することもできます。

関連情報

ADO.NET の使用方法の詳細については、「Visual C# .NET を使用してデータベースから DataSet オブジェクトを設定する方法」を参照してください。

注:

企業、組織、製品、ドメイン名、電子メール アドレス、ロゴ、人、場所、およびここに示されているイベントの例は架空です。 実際の会社、organization、製品、ドメイン名、電子メール アドレス、ロゴ、人物、場所、またはイベントとの関連付けが意図されていないか、推論する必要はありません。