この記事では、次の Microsoft .NET Framework クラス ライブラリ名前空間について説明します。
-
System.Data.SqlClient
-
System.io
-
System.text
この資料の内容
概要
この記事では、タブ区切りのテキスト ファイルをデータベースから動的に構築する方法について説明します。 その後、Microsoft Excel でファイルを開くことができます。 この記事のサンプル コードでは、Microsoft SQL Server データベースに接続し、Pubs データベースから一連のデータを返し、データを含むタブ区切りのテキスト ファイルを作成する方法を示します。
サンプル コードをビルドする
この例では、ExcelCS.aspx という名前の Visual C# .NET ページ ASP.NET サンプルを作成します。 このページは、SQL Server Pubs データベースに接続し、FileStream オブジェクトを使用して、タブ区切りのテキスト ファイルに情報を返します。 ASP.NET ページには、コードの出力を示すために作成した .xls ファイルへのリンクが表示されます。
-
Microsoft Visual Studio .NET を起動します。
-
[ファイル] メニューの [新規] をポイントし、[プロジェクト] をクリックします。
-
[新しいプロジェクト] ダイアログ ボックスの [プロジェクトの種類] で、[Visual C# プロジェクト] をクリックします。 [テンプレート] で、[Web アプリケーション ASP.NET クリックします。
-
[場所] ボックスに、サーバー名とプロジェクト名を次の形式で入力します。
http:// ServerName/Project Name この例では、プロジェクトExcelCSTest という名前を付けます。 ローカル サーバーを使用している場合は、サーバー名をhttp://localhost のままにすることができます。
-
HyperLink コントロールをツールボックスからWebForm1.aspx ファイルにドラッグします。
-
WebForm1.aspxを右クリックし、[コードの表示] をクリックして分離コード ページ ソースを表示します。
-
分離コード ページの上部に次のステートメントを追加します。
using System.Data.SqlClient;using System.IO;using System.Text;
-
WebForm1.aspxの分離コード ページで、Page_Load イベントに次のコードを追加します。
//You use these variables throughout the application.string fileExcel, filePath, fileName, strLine, sql;FileStream objFileStream;StreamWriter objStreamWriter;Random nRandom = new Random(DateTime.Now.Millisecond);SqlConnection cnn = new SqlConnection("server=(local);database=pubs;Integrated Security=SSPI"); //Create a random file name.fileExcel = "t" + nRandom.Next().ToString() + ".xls";//Set a virtual folder to save the file.//Make sure to change the application name to match your folder.filePath = Server.MapPath("\\ExcelCSTest");fileName = filePath + "\\" + fileExcel;//Use FileSystem objects to create the .xls file.objFileStream = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Write); objStreamWriter = new StreamWriter(objFileStream); //Use a DataReader object to connect to the Pubs database.cnn.Open();sql = "select au_id,au_lName,au_fname,phone,address,city,state,zip,contract from authors"; SqlCommand cmd = new SqlCommand(sql, cnn); SqlDataReader dr; dr = cmd.ExecuteReader();//Initialize the string that is used to build the file.strLine = "";//Enumerate the field names and the records that are used to build //the file.for (int i = 0; i <= dr.FieldCount-1; i++) { strLine = strLine + dr.GetName(i).ToString() + Convert.ToChar(9); }//Write the field name information to the file.objStreamWriter.WriteLine(strLine);//Reinitialize the string for data.strLine = "";//Enumerate the database that is used to populate the file.while (dr.Read()) { for (int i = 0; i <= dr.FieldCount-1; i++) { strLine = strLine + dr.GetValue(i).ToString() + Convert.ToChar(9); } objStreamWriter.WriteLine(strLine); strLine=""; }//Clean up.dr.Close();cnn.Close();objStreamWriter.Close();objFileStream.Close();//Include a link to the Excel file.HyperLink1.Text="Open Excel";HyperLink1.NavigateUrl=fileExcel;
-
環境に応じて、接続文字列 (SqlConnection) を変更します。
-
[ファイル] メニューの [すべて保存] をクリックして、プロジェクト ファイルを保存します。
-
Visual Studio .NET 統合開発環境 (IDE) の [ビルド] メニューで、[ソリューションのビルド] をクリックしてプロジェクトをビルドします。
-
Visual Studio .NET 統合開発環境ソリューション エクスプローラーで、[WebForm1.aspx] を右クリックし、[ブラウザーで表示] をクリックしてコードを実行します。
トラブルシューティング
-
環境に合わせてコード サンプルの接続文字列を変更する必要があります。
-
ファイルの書き込みを許可するには、aspnet_wp プロセス (Microsoft Windows 2000 および Microsoft Windows XP) または w3wp プロセス (Microsoft Windows Server 2003) のアクセス許可を増やす必要があります。 関連情報を参照するには、次のマイクロソフト サポート技術情報番号をクリックしてください。
317012 INFO: ASP.NET での ID の処理と要求