ASP.NET、ADO.NET、Visual C# .NET を使用した Excel データのクエリと表示
この記事では、Visual C# .NET を使用して、ASP.NET (.aspx) ページを使用して Excel ワークシートからデータを照会して表示する方法について説明します。
元の製品バージョン: ASP.NET
元の KB 番号: 306572
サンプル Excel ワークシートを作成する
Microsoft Excel を起動し、新しいワークシートを作成します。
次の情報を新しいワークシートに追加して、Excel データベースを作成します。
行番号 A B 1 FirstName LastName 2 スコット Bishop 3 ケイティ ヨルダン 注:
この例のセル A1 で始まるデータですが、ワークシート内の隣接するセルにこのデータを追加できます。
データがある行と列を強調表示します。
[ 挿入 ] メニューの [ 名前] をポイントし、[ 定義] をクリックします。
[ ブック内の名前 ] テキスト ボックスに「 myRange1」と入力し、[OK] をクリック します。
[ファイル] メニューで [保存] をクリックします。 [保存場所] ボックスの一覧で、Web サーバー ルート (通常
C:\InetPub\Wwwroot\
は) を選択します。 [ ファイル名 ] テキスト ボックスに「 ExcelData.xls」と入力します。 [OK] をクリックします。[ファイル] メニューの [終了] をクリックします。
Visual C# .NET を使用して ASP.NET サンプルを作成する
このコード サンプルでは、Excel ワークシートで情報を照会して表示する方法を示します。 次のコードでは、前のセクションで作成したワークシートを使用します。
Microsoft Visual Studio .NET を開きます。 Visual Studio .NET 統合開発環境 (IDE) が表示されます。
[ ファイル] メニューの [ 新規] をポイントし、[ プロジェクト] をクリックします。
[ 新しいプロジェクト ] ダイアログ ボックスの [ プロジェクトの種類] で、[ Visual C# プロジェクト] をクリックします。 [ テンプレート] の [ ASP.NET Web アプリケーション] をクリックします。
[ 新しいプロジェクト ] ダイアログ ボックスで、[ 名前 ] ボックスと [場所 ] テキスト ボックスを見つけます。
注:
- [名前] テキスト ボックスは使用できません (淡色表示または淡色表示で表示されます)。 [場所] テキスト ボックスには、テキスト (またはそれと同様)
http://localhost/WebApplication1
が含まれています。 - [場所] テキスト ボックス
http://localhost/ExcelCSTest
のテキストを [OK] をクリックします。 WebForm1.aspx という名前の Web フォームを含む新しいプロジェクトが作成されます。
- [名前] テキスト ボックスは使用できません (淡色表示または淡色表示で表示されます)。 [場所] テキスト ボックスには、テキスト (またはそれと同様)
Visual Studio .NET IDE で、ソリューション エクスプローラー ウィンドウを見つけます。 見つからない場合は、[表示] メニューの [ソリューション エクスプローラー] をクリックします。
ソリューション エクスプローラーで WebForm1.aspx を右クリックし、[デザイナーの表示] をクリックして、ページの外観のデザイナーを表示します。 デザイナーを使用すると、コントロールを追加し、ページの外観を操作できます。
ツールボックスを見つけます。 IDE オプションの設定によっては、ツールボックスはウィンドウまたはボタンとして表示されます (多くの場合、IDE の左側に表示されます)。 ツールボックスが見つからない場合は、[表示] メニューの [ツールボックス] をクリックします。
ツールボックスがボタンとして表示される場合は、ツールボックスの内容が表示されるように、ボタンの上にポインターを移動します。
Web フォームのデザイナー ビューがアクティブな場合、ツールボックスは、Web Forms、コンポーネント、HTML、その他のセクションを含むセクションに分割されます。 [Web Forms] セクションをクリックします。
ツールボックスの [Web Forms] セクションで [DataGrid] をクリックし、WebForm1 のデザイナーにドラッグします。
WebForm1.aspx を右クリックし、[コードの表示] をクリックして分離コード ページ ソースを表示します。
名前空間セクションの上にある分離コード ページの上部に次のステートメントを追加します。
using System.Data.OleDb; using System.Data;
次のコードを強調表示し、コードを右クリックし、[ コピー] をクリックします。 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();
[ ファイル ] メニューの [ すべて保存] をクリックしてプロジェクト ファイルを保存します。
[ ビルド ] メニューの [ ビルド ] をクリックしてプロジェクトをビルドします。 この手順では、コードを実行できるように分離コード ページでコードを準備します。
ソリューション エクスプローラーで 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 ワークシートの作成 ] セクションでは、Web ルート ディレクトリに ExcelData.xls を作成します。通常 C:\Inetpub\Wwwroot
は . また、Wwwroot フォルダー内に ExcelCSTest という名前のサブフォルダーと、_ExcelCSTest_folder内に WebForm1.aspx という名前のファイルも作成されます。
この例では、ハード ディスク上のファイル パスは次のようになります C:\Inetpub\Wwwroot\ExcelCSTest
。 Wwwroot には ExcelData.xlsが含まれています。 ExcelCSTest には WebForm1.aspx が含まれています。
ファイルへの IIS パスは次のようになります C:\Web Root\ExcelCSTest
。 Web ルートには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 オブジェクトを設定する方法」を参照してください。
注:
ここに示されている企業、組織、製品、ドメイン名、電子メール アドレス、ロゴ、人、場所、イベントの例は架空のものです。 実際の会社、組織、製品、ドメイン名、電子メール アドレス、ロゴ、人物、場所、イベントとの関連付けは意図されていないか、推論する必要はありません。
フィードバック
https://aka.ms/ContentUserFeedback.
Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see:フィードバックの送信と表示