午前中には、システムの注文管理部分に、管理者が分析できるように照会された注文情報を Excel にエクスポートする機能が追加されました。以前に記述したコードは次のとおりです
。
Response.BufferOutput = true;
Response.Charset = "GB2312";
Response.AppendHeader("Content-Disposition","attachment;filename = FileName.xls");
Response.ContentEncoding = Encoding.GetEncoding("GB2312");
Response.ContentType = "アプリケーション/ms-excel";
this.EnableViewState = false;
System.Globalization.CultureInfo myinfo = new System.Globalization.CultureInfo("ZH-CN", true);
StringWriter osw = 新しい StringWriter(myinfo);
HtmlTextWriter ohtw = 新しい HtmlTextWriter(osw);
dgQueryResult.RenderControl(ohtw);
応答.書き込み(osw);
Response.End();
私のクエリではページングが使用されており、顧客はクエリされたすべてのデータを Excel にエクスポートすることを要求していました。そのため、以前のようにコントロールのコンテンツを Excel にエクスポートするだけではこの機能を実現できなかったため、コードを次のように変更しました。
Response.Clear();
Response.BufferOutput = true;
Response.Charset = "GB2312";
Response.AppendHeader("Content-Disposition","attachment;filename = order.xls");
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
Response.ContentType = "アプリケーション/ms-excel";
文字列 strExcelHeader = 文字列.Empty;
文字列strExcelItems;
if(ViewState["SQL"] != null) // 前のクエリで使用された SQL ステートメントを取得します
{
// 各列のタイトルを取得し、各タイトルを t で区切って、最後の列タイトルの後に復帰文字を追加します
strExcelHeader = "注文番号tディーラーt地域t小カテゴリt商品t支払金額t注文時刻t有効ステータスt処理ステータスtn";
//取得したデータ情報をHTTP出力ストリームに書き込みます
Response.Write(strExcelHeader);
// クエリ結果データを行ごとに処理します
ITDBHandle itDbHandle = 新しい ITDBHandle();
itDbHandle.QueryString = ViewState["SQL"].ToString();
SqlDataReader リーダー = itDbHandle.ExecuteDataReader();
while(reader.Read())
{
strExcelItems = string.Empty;
strExcelItems += Reader["OrderID"].ToString() + "t";
strExcelItems += Reader["ディーラー名"].ToString() + "t";
strExcelItems += Reader["City"].ToString() + "t";
strExcelItems += Reader["SmallClassName"].ToString() + "t";
strExcelItems += リーダー["ブランド名"].ToString() + リーダー["モデル"].ToString() + "t";
strExcelItems += Reader["TotalPrice"].ToString() + "t";
strExcelItems += Reader["OrderDate"].ToString() + "t";
strExcelItems += Reader["IsValid"].ToString() + "t";
strExcelItems += Reader["DealState"].ToString() +"n";
Response.Write(strExcelItems);
}
Reader.Close();
Response.End();
}
ここでは、クエリされたデータを Excel 形式で記述するだけです (もちろん、XML などの他の形式でも可能です)。もちろん、単純なニーズにはこれで十分です。もちろん、.NET を使用して直接操作することも非常に簡単です。 Excel ファイルには、参考用の例が多数あります。